Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Abfrage, um vier zufällige Daten aus der Datenbank anzuzeigen

Ihre erste Abfrage ist in Ordnung, aber die while ist falsch:

Sehen Sie sich nur an, was Sie hier gemacht haben:

$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>";
}

dies endet in einer "Endlosschleife" und verursacht $rows wird immer gesetzt. Was Sie brauchen ist:

while($rows=mysql_fetch_array($query_run))

dies wird myslq_fetch_array verursachen um jedes Mal eine neue Zeile zurückzugeben, wenn die While-Bedingung geprüft wird. Und wenn alle 4 Zeilen zurückgegeben werden, $rows wird falsch und die Schleife wird gestoppt.

Und um vollständig zu sein:In Ihrem zweiten Beispiel iterieren Sie genau 4 Mal über die GLEICHE Zeile, Sie haben nur einmal abgerufen, indem Sie myslq_fetch_array aufgerufen haben .

Eine mögliche Lösung dafür besteht darin, die Zeile INNERHALB der While-Schleife erneut abzurufen:

$i=4;
while ($i>0){
    $rows = mysql_fetch_array(...);
    $i--;
}

Allerdings sollten Sie die erste Lösung bevorzugen, da Sie dann nicht darauf achten müssen, dass der Ergebniszähler mit Ihrer Iteratorvariable übereinstimmt.

Seitenknoten:Nennen Sie es $row ohne das 's', weil man immer nur EINE Zeile zurückbekommt.