Использовать дважды запрос mysql_fetch_array

просто

$stuff = mysql_query("SELECT * FROM users"); while($s = mysql_fetch_array($stuff)){ # .... } while($r = mysql_fetch_array($stuff)){ # ... } 

Последнее время () не работает. Я попытался запустить foreach ($ stuff as $ s), но затем я получаю недопустимую ошибку массива.

Как я могу использовать один и тот же запрос дважды?

 $stuff = mysql_query("SELECT * FROM users"); while($s = mysql_fetch_array($stuff)){ # .... } // add this line mysql_data_seek( $stuff, 0 ); while($r = mysql_fetch_array($stuff)){ # ... } 

Должен сделать трюк

Другим способом является, конечно, сохранение вашего результата в массиве и повторное использование этого

 $ stuff = mysql_query ("SELECT * FROM users");

 while ($ s = mysql_fetch_array ($ stuff)) {
 # ....
 }
 mysql_data_seek ($ stuff, 0);
 while ($ r = mysql_fetch_array ($ stuff)) {
 # ...
 }
 // ref: http://www.php.net/manual/en/function.mysql-data-seek.php

см. документы

Я думаю, это потому, что

Возвращает массив, соответствующий выбранной строке, и перемещает указатель внутренней информации вперед .

Я думаю, что перемещение указателя данных с помощью mysql_data_seek () будет выполнять работу. Но я думаю, что это не очень хорошо, вы обычно должны извлекать данные из базы данных один раз и хранить их

Вот еще одно более простое решение:

 $slq = "SELECT * FROM users"; $stuff1 = mysql_query($slq); while($s = mysql_fetch_array($stuff1)){ # .... } $stuff2 = mysql_query($slq); while($r = mysql_fetch_array($stuff2)){ # ... } 

Назначьте sql переменной и вызовите mysql несколько раз.

не больше mysql. использовать mysqli или pdo

Если пользователь «foreach» вместо «while» у вас не будет проблем и нет необходимости в mysqli_seek_data ():

 //1st loop : foreach($stuff as $row) { echo $row['...']; } ... //2nd loop : foreach($stuff as $row) { echo $row['...']; }