为什么使用mysql_fetch_array的循环会受到前一个mysql_fetch_array的影响?


Why are loops using mysql_fetch_array affected by a previous mysql_fetch_array?

我执行了一个查询,并在一个名为$raw_results的变量中捕获了结果;

然后有以下内容:

$record_set = mysql_fetch_array($raw_results);
echo "<pre>";
print_r($record_set);
echo "</pre>";
echo "<hr />";

右边是:

while ($record_set = mysql_fetch_array($raw_results))
{
echo "<pre>";
print_r($record_set);
echo "</pre>";
}

我很惊讶(和困惑),while loop开始于record #2 in the array而不是record #1

如果我删除循环上方的块,那么循环将显示record #1

为什么循环受到它上面的块的影响?

提前感谢您的宝贵时间。欢呼。

每次调用mysql_fetch_array()都会移动结果资源$raw_results中的记录指针。因此,初始调用已经将其推进到第二个记录。下一次调用,无论是在循环中还是单独调用,都将检索下(第二)行。

要倒回到第一条记录,可以使用mysql_data_seek():

mysql_data_seek($raw_results, 0);

这是因为您第一次使用mysql_fetch_array时,它返回第一行并将指针移动到下一行。