Pour une raison quelconque, je dois parcourir deux fois un jeu de résultats mysql. Y a-t-il un moyen de le faire? Je ne veux pas exécuter la requête deux fois et je ne veux pas avoir à réécrire le script pour qu'il stocke les lignes quelque part, puis les réutilise plus tard.
Réponses
Trop de publicités?Voici comment vous pouvez procéder :
$result = mysql_query(/* Your query */);
while($row = mysql_fetch_assoc($result)){
// do whatever here...
}
// set the pointer back to the beginning
mysql_data_seek($result, 0);
while($row = mysql_fetch_assoc($result)){
// do whatever here...
}
Cependant, je dois dire que cela ne semble pas la bonne façon de gérer cela. Pourquoi ne pas faire le traitement dans la première boucle ?
guitarlass
Points
752
Pour mysqli, vous devez procéder comme suit :
$result= $con->query($sql); // $con is the connection object
$result->data_seek(0);
BugFinder
Points
7662
Clintonio
Points
57
L'alternative à la recherche de données consiste à stocker les valeurs dans un tableau :
$arrayVals = array();
$result = mysql_query(/* Your query */);
while($row = mysql_fetch_assoc($result)){
$arrayVals[] = $row;
}
// Now loop over the array twice instead
$len = count($arrayVals);
for($x = 0; $x < $len; $x++) {
$row = $arrayVals[$x];
// Do something here
}
$len = count($arrayVals);
for($x = 0; $x < $len; $x++) {
$row = $arrayVals[$x];
// Do something else here
}