просто
$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['...']; }