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.