7 ответов:
вот как вы можете это сделать:
$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... }однако, я бы сказал, это не кажется правильным способом справиться с этим. Почему бы не сделать обработку в первом цикле?
попробовать ли mysql_data_seek () делает то, что вам нужно.
mysql_data_seek() перемещает внутренний указатель на строку результата MySQL связанный с указанным результатом идентификатор для указания на указанный номер строки. Следующий вызов MySQL функция выборки, например mysql_fetch_assoc(), вернется что ряд.
функции row_number начинается с 0. Номер строки должно быть значение в диапазоне от 0 to mysql_num_rows () - 1. Однако если результирующий набор пуст (mysql_num_rows() == 0), a стремиться к 0 потерпит неудачу с E_WARNING и mysql_data_seek () вернет FALSE
альтернативой поиску данных является сохранение значений в массив:
$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 }
можно использовать mysql_data_seek для перемещения внутреннего указателя в начало набора данных. Затем вы можете просто повторить его снова.
признаюсь, я не пробовал этого, но вы не пробовали после первой итерации
mysql_data_seek($queryresult,0);перейти к первой записи?
на mysqli вы должны сделать следующее:
$result= $con->query($sql); // $con is the connection object $result->data_seek(0);
Ну, вы всегда можете подсчитать количество строк, которые Вы читаете, а затем сделать что-то вроде этого:
if (rownumber == mysql_num_rows($result)) { mysql_data_seek($result, 0); }Не знаю зачем вам, но это так.
Comments