Twoje pierwsze zapytanie jest w porządku, ale chwila jest nieprawidłowa:
Spójrz tylko, co tutaj zrobiłeś:
$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>";
}
zakończy się to „nieskończoną pętlą”, ponieważ $rows
zawsze będzie ustawiony. Potrzebujesz:
while($rows=mysql_fetch_array($query_run))
spowoduje to myslq_fetch_array
zwracać nową linię za każdym razem, gdy sprawdzany jest warunek while. A jeśli wszystkie 4 wiersze zostaną zwrócone, $rows
będzie fałszywe i pętla zostanie zatrzymana.
I żeby być kompletnym:w drugim przykładzie dokładnie iterujesz 4 razy po TYM SAMYM wierszu, pobrałeś tylko jeden raz, wywołując myslq_fetch_array
.
Możliwym rozwiązaniem tego problemu będzie ponowne pobranie wiersza WEWNĄTRZ pętli while:
$i=4;
while ($i>0){
$rows = mysql_fetch_array(...);
$i--;
}
Jednak powinieneś preferować pierwsze rozwiązanie, ponieważ wtedy nie musisz uważać, aby liczba wyników była zgodna z twoją zmienną iteratora.
sidenode:nazwij to $row
bez „s”, ponieważ zawsze otrzymujesz tylko JEDEN wiersz z powrotem.