0

第一个循环做得很好,但第二个不是。例如:

$sql = "select * from table";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result))
{
  //some code
}
while($row=mysql_fetch_array($result))
{
  //some code
}

我只想知道为什么

4

3 回答 3

1

在我回答之后,我做了更多的研究并在下面的编辑中发布了正确的版本

因为它是数组迭代器在 PHP 中的工作方式,所以重置指针应该可以解决问题:

while($row=mysql_fetch_array($result))
{
  //some code
}
// reset($result); - won't work with mysql_query() result
mysql_data_seek($result, 0);
while($row=mysql_fetch_array($result))
{
   //some code
}

在此处阅读有关reset() 函数的更多信息

编辑:经过更多研究,我发现我错了 - 使用mysql_data_seek

mysql_data_seek($result, 0);
于 2013-09-24T08:20:05.910 回答
1

通过第一个 while 循环获取结果集的所有数据后,指针将转到最后一条记录,因此它不会在第二个 while 循环中获取任何内容。您需要将指针设置回第一条记录,然后再将其再次传递给 while 循环。

只需像这样更新您的代码:

$sql = "select * from table";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result))
{
  //some code
}

mysql_data_seek(0); // Add this line

while($row=mysql_fetch_array($result))
{
  //some code
}
于 2013-09-24T08:25:28.343 回答
0

你可以这样复制$result

$sql = "select * from table";
$result=mysql_query($sql);
$result2 = $result;
while($row=mysql_fetch_array($result))
{
  //some code
}
while($row=mysql_fetch_array($result2))
{
  //some code
}
于 2013-09-24T08:25:40.800 回答