使用查询两次mysql_fetch_array

时间:2011-11-27 12:31:02

标签: php

一个简单的

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

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

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

最后一个while()不起作用。我试过运行foreach($ stuff作为$ s),但后来我得到无效的数组错误。

我如何使用相同的查询两次?

5 个答案:

答案 0 :(得分:37)

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

应该做的伎俩

另一种方法当然是将结果存储在数组中并重用

答案 1 :(得分: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

答案 2 :(得分:0)

请参阅docs

我猜是因为

  

返回与获取的行对应的数组,向前移动内部数据指针

我认为使用mysql_data_seek()移动数据指针可以完成这项工作 但我认为这不是一个好方法,你通常应该从数据库中获取一次数据并存储它们

答案 3 :(得分:0)

如果您使用" foreach"而不是"而#34;你没有任何问题,也不需要mysqli_seek_data():

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

答案 4 :(得分:0)

这是另一个更简单的解决方案:

$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