sql >> Databáze >  >> RDS >> Mysql

Proč moje smyčka foreach nefunguje podle očekávání?

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čí.




  1. Jak funguje funkce CONCAT() v PostgreSQL

  2. Získejte SOUČET prodejů za několik let ve sloupcích

  3. Jaký je v SQL rozdíl mezi JOIN a CROSS JOIN?

  4. Jak mohu vybrat řádky v MySQL počínaje daným číslem řádku?