第一个循环做得很好,但第二个不是。例如:
$sql = "select * from table";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result))
{
//some code
}
while($row=mysql_fetch_array($result))
{
//some code
}
我只想知道为什么
第一个循环做得很好,但第二个不是。例如:
$sql = "select * from table";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result))
{
//some code
}
while($row=mysql_fetch_array($result))
{
//some code
}
我只想知道为什么
在我回答之后,我做了更多的研究并在下面的编辑中发布了正确的版本
因为它是数组迭代器在 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);
通过第一个 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
}
你可以这样复制$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
}