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