fetch_array
Aprenda a usar mysqli_fetch_array() em PHP para buscar linhas de um conjunto de resultados MySQLi como array associativo ou numérico.
Neste artigo, vamos focar na função mysqli_fetch_array() em PHP, usada para buscar uma linha de um conjunto de resultados MySQLi como array associativo, numérico ou combinado. Apresentaremos uma visão geral da função, seus parâmetros e exemplos práticos.
Introdução à função mysqli_fetch_array()
A função mysqli_fetch_array() é uma função nativa do PHP que recupera uma linha de um conjunto de resultados MySQLi. Ela retorna a linha como um array associativo, um array numérico ou ambos, dependendo do parâmetro result_type. Isso é especialmente útil quando você precisa iterar sobre os resultados de uma consulta e acessar colunas pelo nome ou pelo índice.
Ela opera sobre o resultado retornado por mysqli_query(). Cada chamada avança um ponteiro interno para a próxima linha e a retorna; quando não há mais linhas, retorna null (o valor que encerra o loop). É a mais flexível das funções de busca do MySQLi: mysqli_fetch_assoc() sempre retorna chaves por nome, mysqli_fetch_row() sempre retorna chaves por índice, e mysqli_fetch_array() permite escolher uma ou ambas as formas.
Como usar a função mysqli_fetch_array()
Usar mysqli_fetch_array() requer um conjunto de resultados MySQLi válido. Ela é normalmente usada dentro de um loop while para iterar por todas as linhas. Veja um exemplo completo com tratamento básico de erros:
Uso básico com um loop while
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
if (!$mysqli) {
die("Connection failed: " . mysqli_connect_error());
}
$query = "SELECT * FROM my_table";
$result = mysqli_query($mysqli, $query);
if (!$result) {
die("Query failed: " . mysqli_error($mysqli));
}
// Fetch rows as an associative array
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
echo $row['column1'] . " - " . $row['column2'] . "<br>";
}
mysqli_close($mysqli);
?>Neste exemplo, estabelecemos uma conexão e executamos uma consulta. Verificamos erros de conexão e de consulta para evitar falhas silenciosas. O loop while chama mysqli_fetch_array() repetidamente, retornando false quando não existem mais linhas. A constante MYSQLI_ASSOC garante que as colunas sejam acessadas pelo nome.
Modos de busca e uso avançado
O segundo parâmetro de mysqli_fetch_array() controla como a linha é retornada. Há três constantes que você pode usar:
MYSQLI_ASSOC– Retorna um array associativo (nomes das colunas como chaves).MYSQLI_NUM– Retorna um array numérico (índices das colunas como chaves).MYSQLI_BOTH– Retorna arrays associativo e numérico. Este é o modo padrão quando o segundo parâmetro é omitido.
Veja como buscar uma linha como array numérico:
Busca com array numérico
<?php
// ... connection and query setup ...
while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
echo $row[0] . " - " . $row[1] . "<br>";
}
?>Ao usar MYSQLI_BOTH, cada coluna aparece duas vezes no array: uma vez pelo nome e outra pelo índice. Isso pode ser útil para código legado, mas aumenta o uso de memória, portanto MYSQLI_ASSOC ou MYSQLI_NUM é geralmente preferido em aplicações modernas. Se você precisar apenas de uma forma, prefira os auxiliares dedicados mysqli_fetch_assoc() ou mysqli_fetch_row(), que evitam a criação das chaves extras.
Estilo orientado a objetos
mysqli_fetch_array() também possui uma forma orientada a objetos. Se você obteve o resultado de $mysqli->query(), chame o método no objeto de resultado em vez de passar o resultado para a função procedural:
Equivalente em OOP
<?php
$result = $mysqli->query("SELECT * FROM my_table");
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
echo $row['column1'] . " - " . $row['column2'] . "<br>";
}
?>Ambos os estilos chamam o mesmo comportamento subjacente; escolha aquele que melhor combina com o restante do seu código. Para mapear cada linha em um object com propriedades nomeadas em vez de um array, use mysqli_fetch_object(), e para buscar todas as linhas de uma vez em um array 2D, consulte mysqli_fetch_all().
Conclusão
A função mysqli_fetch_array() oferece recuperação flexível de linhas a partir de conjuntos de resultados MySQLi. Ao compreender seus modos de busca e incorporar o tratamento básico de erros, você pode escrever consultas de banco de dados mais robustas e eficientes em PHP.