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

时间:2011-12-30 20:34:10

标签: php loops

我执行了一个查询,并在名为$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 looprecord #2 in the array而不是record #1开始。

如果我删除了循环上方的块,那么循环会显示{I},正如我原先预期的那样。

为什么循环会受到其上方块的影响?

提前感谢您抽出宝贵时间。欢呼声。

2 个答案:

答案 0 :(得分:2)

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

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

mysql_data_seek($raw_results, 0);

答案 1 :(得分:0)

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