mysqli_query()
non restituisce un array o un oggetto array che puoi usare con foreach(). Il tipo restituito di mysqli_query() è una risorsa. Recuperi da esso in un ciclo, come la tua seconda soluzione.
È più semplice usare while() invece di for():
$cast_list = mysqli_query($dblink, $sql);
while ($role = mysqli_fetch_assoc($cast_list)) {
echo "<tr><td width='50%'>".$role['appeared_as']."</td>";
}
Il ciclo terminerà automaticamente quando la riga recuperata è NULL alla fine del set di risultati. Non è necessario conoscere il numero di righe prima del ciclo.
Re il tuo commento:
Dopo aver cercare alcuni fatti , devo ammettere che la mia risposta sopra non è del tutto vera. Oppure non è vero per alcune versioni di PHP.
In PHP 5.4, una risorsa mysqli_result ha aggiunto Iterator
funzionalità, in realtà puoi usalo in un foreach()
. Ma il tuo host apparentemente utilizza una versione precedente di PHP.
La best practice è sviluppare sulla stessa versione di all software su cui eseguirete la distribuzione, in modo da non essere colti da questo tipo di sorpresa.