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.