Mysql
 sql >> Base de données >  >> RDS >> Mysql

Pourquoi ma boucle foreach ne fonctionne-t-elle pas comme prévu ?

mysqli_query() ne renvoie pas un tableau ou un objet tableau que vous pouvez utiliser avec foreach(). Le type de retour de mysqli_query() est une ressource. Vous en récupérez en boucle, comme votre deuxième solution.

Il est plus simple d'utiliser while() au lieu de for() :

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

La boucle se terminera automatiquement lorsque la ligne extraite est NULL à la fin du jeu de résultats. Vous n'avez pas besoin de connaître le nombre de lignes avant la boucle.

Concernant votre commentaire :

Après recherche de quelques faits , je dois admettre que ma réponse ci-dessus n'est pas entièrement vraie. Ou n'est pas vrai pour certaines versions de PHP.

En PHP 5.4, une ressource mysqli_result a ajouté Iterator fonctionnalité, vous pouvez utilisez-le dans un foreach() . Mais votre hébergeur utilise apparemment une ancienne version de PHP.

La meilleure pratique consiste à développer sur la même version de tous logiciel que vous allez déployer, afin que vous ne soyez pas pris par ce genre de surprise.