Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Por que meu loop foreach não está funcionando conforme o esperado?


mysqli_query() não retorna uma matriz ou objeto de matriz que você pode usar com foreach(). O tipo de retorno de mysqli_query() é um recurso. Você obtém dele em um loop, como sua segunda solução.

É mais simples usar while() em vez de for():
$cast_list = mysqli_query($dblink, $sql);
while ($role = mysqli_fetch_assoc($cast_list)) {
    echo "<tr><td width='50%'>".$role['appeared_as']."</td>";
}

O loop terminará automaticamente quando a linha buscada for NULL no final do conjunto de resultados. Você não precisa saber o número de linhas antes do loop.

Re seu comentário:

Depois de procurar alguns fatos , tenho que admitir que minha resposta acima não é totalmente verdadeira. Ou não é verdade para algumas versões do PHP.

No PHP 5.4, um recurso mysqli_result adicionou Iterator funcionalidade, você pode use-o em um foreach() . Mas seu host aparentemente usa uma versão mais antiga do PHP.

A prática recomendada é desenvolver na mesma versão de todos software para o qual você implantará, para que você não seja pego por esse tipo de surpresa.