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

consulta para exibir quatro dados aleatórios do banco de dados


Sua primeira consulta está boa, mas o while está errado:

Veja o que você fez aqui:
$rows=mysql_fetch_array($query_run);
while($rows)
{
    echo $rows['banner_no'];
    echo $rows['banner_name'];
    echo "<a href=\"".$rows['Banner_website_url']. "\">";
    echo "<img src=\"".$rows['banner_image_url']."\" width=\"100px\" height=\"100px\">";
    echo"</a>";
}

isso terminará em um "Loop infinito" porque $rows sempre será definido. O que você precisa é:
while($rows=mysql_fetch_array($query_run))

isso fará com que myslq_fetch_array para retornar uma nova linha toda vez que a condição while for verificada. E se todas as 4 linhas forem retornadas, $rows será false e o loop é interrompido.

E para ser completo:em seu segundo exemplo, você está iterando exatamente 4 vezes sobre a MESMA linha, você acabou de buscar uma vez chamando myslq_fetch_array .

Uma possível solução para isso será buscar a linha novamente DENTRO do loop while:
$i=4;
while ($i>0){
    $rows = mysql_fetch_array(...);
    $i--;
}

No entanto, você deve preferir a primeira solução, porque então você não precisa tomar cuidado para que a contagem de resultados corresponda à sua variável iteradora.

sidenode:Chame de $row sem o 's', porque você sempre recebe apenas UMA linha de volta.