mysqli_query()
nevrací pole nebo objekt pole, které můžete použít s foreach(). Návratový typ mysqli_query() je zdroj. Načítáte z něj ve smyčce, jako vaše druhé řešení.
Je jednodušší použít while() místo for():
$cast_list = mysqli_query($dblink, $sql);
while ($role = mysqli_fetch_assoc($cast_list)) {
echo "<tr><td width='50%'>".$role['appeared_as']."</td>";
}
Cyklus se automaticky ukončí, když je načtený řádek na konci sady výsledků NULL. Nemusíte znát počet řádků před smyčkou.
K vašemu komentáři:
Po vyhledání některých faktů , musím přiznat, že moje výše uvedená odpověď není úplně pravdivá. Nebo to neplatí pro některé verze PHP.
V PHP 5.4 byl do zdroje mysqli_result přidán Iterator
funkce, vlastně můžete použijte jej v foreach()
. Ale váš hostitel zřejmě používá starší verzi PHP.
Nejlepším postupem je vyvíjet na stejné verzi všech software, do kterého nasadíte, takže vás tento druh překvapení nezaskočí.