
Ya sabes que al ejecutar una consulta que devuelve datos obtienes un objeto de la clase mysqli_result
. Esta clase sigue los criterios de ofrecer un interface de programación dual, es decir, una función por cada método con la misma funcionalidad que éste.
Para trabajar con los datos obtenidos del servidor, tienes varias posibilidades:
fetch_array
(funciónmysqli_fetch_array
). Obtiene un registro completo del conjunto de resultados y lo almacena en un array. Por defecto el array contiene tanto claves numéricas como asociativas. Por ejemplo, para acceder al primer campo devuelto, podemos utilizar como clave el número 0 o su nombre indistintamente.
$resultado = $conProyecto->query('SELECT producto, unidades FROM stocks WHERE unidades<2');
$stock = $resultado->fetch_array(); // Obtenemos el primer registro
$producto = $stock['producto']; // O también $stock[0];
$unidades = $stock['unidades']; // O también $stock[1];
echo "<p>Producto $producto: $unidades unidades.</p>";
Este comportamiento por defecto se puede modificar utilizando un parámetro opcional, que puede tomar los siguientes valores:
MYSQLI_NUM
. Devuelve un array con claves numéricas.MYSQLI_ASSOC
. Devuelve un array asociativo.MYSQLI_BOTH
. Es el comportamiento por defecto, en el que devuelve un array con claves numéricas y asociativas.
fetch_assoc
(funciónmysqli_fetch_assoc
). Idéntico afetch_array
pasando como parámetroMYSQLI_ASSOC
.fetch_row
(funciónmysqli_fetch_row
). Idéntico afetch_array
pasando como parámetroMYSQLI_NUM
.fetch_object
(funciónmysqli_fetch_object
). Similar a los métodos anteriores, pero devuelve un objeto en lugar de un array. Las propiedades del objeto devuelto se corresponden con cada uno de los campos del registro.
Parar recorrer todos los registros de un array, puedes hacer un bucle teniendo en cuenta que cualquiera de los métodos o funciones anteriores devolverán null
cuando no haya más registros en el conjunto de resultados.
$resultado = $conProyecto->query('SELECT producto, unidades FROM stocks WHERE unidades<2');
$stock = $resultado->fetch_object();
while ($stock != null) {
echo "<p>Producto $stock->producto: $stock->unidades unidades.</p>";
$stock = $resultado->fetch_object();
}