第一个循环很好,但第二个循环不是。例如:
$sql = "select * from table";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result))
{
//some code
}
while($row=mysql_fetch_array($result))
{
//some code
}
我只想知道原因
答案 0 :(得分: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
}
编辑:经过更多研究后发现我错了 - 使用mysql_data_seek
:
mysql_data_seek($result, 0);
答案 1 :(得分:1)
通过first 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
}
答案 2 :(得分: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
}