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.