66 Votos

PHP: Guardar Resultado de MySQL en Array

Información de Stefan Trost | Última actualización el 19/06/2023 | Creado el 24/04/2021

Cuando queremos procesar el resultado de una consulta MySQL en PHP, a menudo es práctico almacenar los datos directamente en una matriz / array. Las funciones importantes en este contexto son mysqli_fetch_array(), mysqli_fetch_row() y mysqli_fetch_assoc(). En esta información, me gustaría repasar esto y explicar la diferencia.

Matriz indexada numéricamente con mysqli_fetch_row

La función mysqli_fetch_row() devuelve una matriz indexada numéricamente. Esto significa que podemos acceder a los datos, por ejemplo, con $arr[1] o $arr[3]:

$res = mysqli_query($db, "SELECT nombre, ciudad, pais FROM tab WHERE id=1");
$arr = mysqli_fetch_row($res);
 
echo $arr[0];  // nombre
echo $arr[1];  // ciudad
echo $arr[2];  // país

Como muestra el ejemplo, el orden de los elementos de la matriz corresponde al orden de los campos de la consulta. Entonces podemos usar la consulta para determinar cómo se debe llenar nuestra matriz.

Matriz asociativa con mysqli_fetch_assoc

La función mysqli_fetch_array() devuelve una matriz asociativa. Esto significa que los campos no se pueden direccionar con el número de índice sino con el nombre del campo. Y este nombre de campo es el nombre de nuestra columna de nuestra base de datos MySQL:

$res = mysqli_query($db, "SELECT nombre, ciudad, pais FROM tab WHERE id=1");
$arr = mysqli_fetch_assoc($res);
 
echo $arr['nombre'];  // nombre
echo $arr['ciudad'];  // ciudad
echo $arr['pais'];    // país

Interesante en este contexto es la función extract(). Esta función puede crear automáticamente variables individuales con el nombre respectivo de la matriz, que luego están disponibles para nosotros en el código, como muestra el siguiente ejemplo:

$res = mysqli_query($db, "SELECT nombre, ciudad, pais FROM tab WHERE id=1");
$arr = mysqli_fetch_assoc($res);
extract($arr);
 
echo $nombre; // nombre
echo $ciudad; // ciudad
echo $pais;   // país

Del mismo modo, la función list() se puede usar para hacer variables individuales a partir de la matriz, como muestra el siguiente ejemplo:

$res = mysqli_query($db, "SELECT nombre, ciudad, pais FROM tab WHERE id=1");
list($nombre, $ciudad, $pais) = mysqli_fetch_row($res);
 
echo $nombre; // nombre
echo $ciudad; // ciudad
echo $pais;   // país

Sin embargo, a diferencia de extract(), con list() tenemos la opción de definir libremente cómo deben llamarse nuestras variables. Podemos, pero no tenemos que ceñirnos a los nombres de las columnas de nuestra tabla.

El todo terreno mysqli_fetch_array

La función mysqli_fetch_array() puede generar la salida del conjunto de datos indexado numéricamente y como una matriz asociativa. Esto se puede regular con los parámetros MYSQLI_NUM o MYSQLI_ASSOC.

Si omite el parámetro por completo o está usando MYSQLI_BOTH, puede usar ambos tipos de índices:

$arr = mysqli_fetch_array($res);  
// equivalent to mysqli_fetch_array($res, MYSQL_BOTH);
 
echo $arr[0];        // nombre
echo $arr['ciudad']; // ciudad
echo $arr[2];        // país

Llamar a mysqli_fetch_array($res, MYSQLI_NUM) es equivalente a la función mysqli_fetch_row($res).

Llamar a mysqli_fetch_array($res, MYSQLI_ASSOC) es equivalente a la función mysqli_fetch_assoc($res).

ResponderPositivoNegativo

Sobre el Autor

AvatarPuede encontrar software de Stefan Trost en la pagina es.sttmedia.com. ¿Necesita un software individual según sus propios requisitos? Escribenos: es.sttmedia.com/contacto
Ver Perfil

 

Temas Relacionados

Aviso Importante

Por favor tenga en cuenta: Las contribuciones publicadas en askingbox.com son contribuciones de los usuarios y no deben reemplazar el asesoramiento profesional. No son verificados por independientes y no reflejan necesariamente la opinión de askingbox.com. Aprende más.

Participar

Haga su propia pregunta o escriba su propio artículo en askingbox.com. He aquí cómo.