2009-08-15 9 views
2

J'ai MySQL et les résultats demandent en boucle à travers eux comme ceci:Comment faire une boucle sur les résultats de MySQL facilement?

$query = "SELECT * FROM $table"; 
$result = mysql_query($query); 
for($i = 0; $i < mysql_num_rows($result); $i++){ 
    echo mysql_result($result, $i, $row); 
    //do something else; 
} 

vous pouvez probablement voir ce qui se passe. Que faire si une ligne a été supprimée? Que faire si le premier objet est parti? Dans ce cas, il peut y avoir 30 éléments dans la liste, mais l'index des derniers éléments est à la position 50. Comment puis-je résoudre ce problème ou quels autres systèmes puis-je utiliser?

Répondre

7
while($temp = mysql_fetch_assoc($result)) 
{ 
    echo $temp['id']; // ID Column 
} 

Mais BTW. Mysql_num_rows renvoie le nombre de lignes que vous avez récupérées. Si vous avez une ligne qui a été supprimée, elle n'aurait pas été récupérée, et par conséquent, elle ne serait pas comptabilisée dans le nombre.

+1

Il convient de noter qu'il existe d'autres fonctions que mysql_fetch_assoc, la principale étant mysql_fetch_object, qui fonctionne de la même manière, sauf qu'elle renvoie un objet de la classe stdClass. Il peut être utilisé dans une boucle while() de la même manière que mysql_fetch_assoc. –

+0

si habituellement faire while ($ result et $ temp = mysql_fetch_assoc ($ result)) – snitch182

+0

Lorsque vous faites $ temp = mysql_fetch_assoc ($ result), le pointeur se déplace sur l'enregistrement suivant. Est-il possible de réinitialiser le pointeur au début de la requête? –

1

Aussi - Je crois que l'ensemble de lignes complet est obtenu au moment de la requête, les lignes supprimées après l'exécution de la requête apparaîtront toujours dans vos résultats.

Questions connexes