sql >> Base de Datos >  >> RDS >> Mysql

¿Por qué mi ciclo foreach no funciona como se esperaba?

mysqli_query() no devuelve una matriz o un objeto de matriz que pueda usar con foreach(). El tipo de retorno de mysqli_query() es un recurso. Lo obtienes en un bucle, como tu segunda solución.

Es más sencillo usar while() en lugar de for():

$cast_list = mysqli_query($dblink, $sql);
while ($role = mysqli_fetch_assoc($cast_list)) {
    echo "<tr><td width='50%'>".$role['appeared_as']."</td>";
}

El ciclo terminará automáticamente cuando la fila recuperada sea NULL al final del conjunto de resultados. No necesita saber el número de filas antes del bucle.

Re tu comentario:

Después de buscar algunos datos , tengo que admitir que mi respuesta anterior no es completamente cierta. O no es cierto para algunas versiones de PHP.

En PHP 5.4, se agregó un recurso mysqli_result Iterator funcionalidad, en realidad puede úsalo en un foreach() . Pero aparentemente su host usa una versión anterior de PHP.

La mejor práctica es desarrollar en la misma versión de todos software en el que se implementará, para que no le sorprenda este tipo de sorpresa.