W3docs

fetch_array

En este artículo, nos centramos en la función mysqli_fetch_array() de PHP, usada para obtener filas de un resultado MySQLi como array asociativo o numérico.

En este artículo, nos centraremos en la función mysqli_fetch_array() de PHP, que se utiliza para obtener una fila de un conjunto de resultados MySQLi como un array asociativo, numérico o combinado. Ofreceremos una descripción general de la función, sus parámetros y ejemplos prácticos.

Introducción a la función mysqli_fetch_array()

La función mysqli_fetch_array() es una función integrada de PHP que recupera una fila de un conjunto de resultados MySQLi. Devuelve la fila como un array asociativo, un array numérico o ambos, según el parámetro result_type. Esto resulta especialmente útil cuando necesitas iterar sobre los resultados de una consulta y acceder a las columnas por nombre o por índice.

Funciona con el resultado devuelto por mysqli_query(). Cada llamada avanza un puntero interno a la siguiente fila y la devuelve; cuando no quedan más filas, devuelve null (el valor que termina el bucle). Es la más flexible de las funciones de obtención de MySQLi: mysqli_fetch_assoc() siempre devuelve claves por nombre, mysqli_fetch_row() siempre devuelve claves por índice, y mysqli_fetch_array() te permite elegir una u otra opción, o ambas.

Cómo usar la función mysqli_fetch_array()

Para usar mysqli_fetch_array() se necesita un conjunto de resultados MySQLi válido. Por lo general, se utiliza dentro de un bucle while para iterar por todas las filas. A continuación, se muestra un ejemplo completo con manejo básico de errores:

Uso básico con un bucle 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);
?>

En este ejemplo, establecemos una conexión y ejecutamos una consulta. Verificamos los errores de conexión y de consulta para evitar fallos silenciosos. El bucle while llama a mysqli_fetch_array() repetidamente y devuelve false cuando no existen más filas. La constante MYSQLI_ASSOC garantiza que se acceda a las columnas por nombre.

Modos de obtención y uso avanzado

El segundo parámetro de mysqli_fetch_array() controla cómo se devuelve la fila. Hay tres constantes disponibles:

  • MYSQLI_ASSOC – Devuelve un array asociativo (los nombres de columna como claves).
  • MYSQLI_NUM – Devuelve un array numérico (los índices de columna como claves).
  • MYSQLI_BOTH – Devuelve tanto el array asociativo como el numérico. Este es el modo predeterminado si se omite el segundo parámetro.

A continuación, se muestra cómo obtener una fila como array numérico:

Obtención de array numérico

<?php
// ... connection and query setup ...
while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
    echo $row[0] . " - " . $row[1] . "<br>";
}
?>

Al usar MYSQLI_BOTH, cada columna aparece dos veces en el array: una vez por nombre y una vez por índice. Esto puede ser útil para código heredado, pero aumenta el uso de memoria, por lo que en aplicaciones modernas generalmente se prefiere MYSQLI_ASSOC o MYSQLI_NUM. Si solo necesitas una forma, opta por los métodos dedicados mysqli_fetch_assoc() o mysqli_fetch_row(), que evitan la creación de claves adicionales.

Estilo orientado a objetos

mysqli_fetch_array() también tiene una forma orientada a objetos. Si obtuviste el resultado a través de $mysqli->query(), llama al método en el objeto resultado en lugar de pasar el resultado a la función procedimental:

Equivalente con POO

<?php
$result = $mysqli->query("SELECT * FROM my_table");
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
    echo $row['column1'] . " - " . $row['column2'] . "<br>";
}
?>

Ambos estilos invocan el mismo comportamiento subyacente; elige el que mejor se adapte al resto de tu código. Para mapear cada fila a un object con propiedades con nombre en lugar de un array, usa mysqli_fetch_object(), y para obtener todas las filas de una vez en un array bidimensional, consulta mysqli_fetch_all().

Conclusión

La función mysqli_fetch_array() ofrece una recuperación flexible de filas desde conjuntos de resultados MySQLi. Al comprender sus modos de obtención e incorporar un manejo básico de errores, podrás escribir consultas de base de datos más robustas y eficientes en PHP.

Práctica

Práctica
¿Qué hace la función mysqli_fetch_array() en PHP?
¿Qué hace la función mysqli_fetch_array() en PHP?
Was this page helpful?