Подтвердить что ты не робот

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

простой

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

while($s = mysql_fetch_array($stuff)){
# ....
}

while($r = mysql_fetch_array($stuff)){
# ...
}

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

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

4b9b3361

Ответ 1

$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)){
# ...
}

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

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

Ответ 2

$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

Ответ 3

см. docs

Я предполагаю, потому что

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

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

Ответ 4

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

$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

Ответ 5

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

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