只想指出为了澄清,每次调用 fetchArray() 都将 SQLite3Result 中的下一个结果返回到一个数组中,直到没有更多结果,此时下一个 fetchArray() 调用将返回 false。
但是,此时对 fetchArray() 的额外调用将重置回结果集的开头,并再次返回第一个结果。这似乎没有明确记录,并且在我弄清楚之前,导致我自己也遇到了一些麻烦。
例如
<?php
$returned_set = $database->query("select query or whatever");
//假设查询返回了 3 个结果
//通常,以下 while 循环将运行 3 次,然后,因为 $result 直到对 fetchArray() 的第四次调用才会为 false
while($result = $returned_set->fetchArray()) {
//但是,在循环中进行额外的调用将导致循环再次运行
$returned_set->fetchArray();
}
?>
基本上,在上面的代码中,fetchArray 将返回
第一次调用 | $returned_set 的第一个结果(来自 while 条件的 fetchArray() 调用)
第二次调用 | 第二个结果(来自 while 块的 fetchArray() 调用)
第三次调用 | 第三个结果(来自 while 条件的 fetchArray() 调用)
第四次调用 | FALSE(来自 while 块的 fetchArray() 调用)
第五次调用 | 第一个结果(来自 while 条件的 fetchArray() 调用)
....
这将导致(至少在这种情况下)while 循环无限运行。