Mysql
 sql >> Base de données >  >> RDS >> Mysql

requête pour afficher quatre données aléatoires de la base de données

Votre première requête est bonne, mais le while est faux :

Regardez ce que vous avez fait ici :

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

cela se terminera par une "boucle infinie" cause $rows sera toujours défini.Ce dont vous avez besoin est :

while($rows=mysql_fetch_array($query_run))

cela causera myslq_fetch_array pour renvoyer une nouvelle ligne à chaque fois que la condition while est vérifiée. Et si les 4 lignes sont renvoyées, $rows sera faux et la boucle est arrêtée.

Et pour être complet :dans votre deuxième exemple, vous itérez exactement 4 fois sur la MÊME ligne, vous venez de récupérer une fois en appelant myslq_fetch_array .

Une solution possible à cela sera de récupérer à nouveau la ligne À L'INTÉRIEUR de la boucle while :

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

Cependant, vous devriez préférer la première solution, car vous n'avez alors pas besoin de veiller à ce que le nombre de résultats corresponde à votre variable d'itérateur.

sidenode :appelez-le $row sans le 's', car vous n'obtenez toujours qu'UNE ligne en arrière.