Использовать дважды запрос 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), но затем я получаю недопустимую ошибку массива.
Как я могу использовать один и тот же запрос дважды?
Ответы
Ответ 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['...'];
}