W3docs

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.

Prática

Prática
O que a função mysqli_fetch_array() em PHP faz?
O que a função mysqli_fetch_array() em PHP faz?
Was this page helpful?