mysqli_query()
returnerar inte en array eller ett arrayobjekt som du kan använda med foreach(). Returtypen för mysqli_query() är en resurs. Du hämtar från den i en slinga, som din andra lösning.
Det är enklare att använda while() istället för for():
$cast_list = mysqli_query($dblink, $sql);
while ($role = mysqli_fetch_assoc($cast_list)) {
echo "<tr><td width='50%'>".$role['appeared_as']."</td>";
}
Slingan kommer att avslutas automatiskt när den hämtade raden är NULL i slutet av resultatuppsättningen. Du behöver inte veta antalet rader före slingan.
Angående din kommentar:
Efter att har letat upp lite fakta , Jag måste erkänna att mitt svar ovan inte är helt sant. Eller är det inte sant för vissa versioner av PHP.
I PHP 5.4 lade en mysqli_result-resurs till Iterator
funktionalitet, du faktiskt kan använd den i en foreach()
. Men din värd använder tydligen en äldre version av PHP.
Det bästa är att utveckla på samma version av all programvara som du kommer att distribuera till, så att du inte fångas av den här typen av överraskning.