无法从结果集中第二次获取数据

时间:2014-09-08 08:02:25

标签: php pdo sqlite resultset

我想知道在从结果集中获取数据之后,结果集是否会保留db中返回的数据。以下是我的代码。第一次执行fetchAll时,我能够获取数据。但是,当我第二次使用fetchAll时,它什么也没回来。我不明白为什么。

我能猜到的是fetchAll可能是指针位于结果集的末尾或结果集可能被释放。 我的哪一个猜对了......?

<?php
$Book_DB =new PDO("sqlite:D:/iAnno.data");
$res = $Book_DB->query("select * from chapter");
$res1 = $res->fetchAll();
$res2 = $res->fetchAll();
print_r($res1);
print_r($res2);
?>

2 个答案:

答案 0 :(得分:2)

http://php.net/manual/en/pdostatement.fetchall.php

  

PDOStatement :: fetchAll()返回一个包含结果集中所有剩余行的数组。

在第一个fetchAll之后,没有剩余的行。

答案 1 :(得分:0)

光标位于末尾。

如果您的数据库支持可滚动结果,您可以使用PDO :: CURSOR_SCROLL,然后使用PDOStatement :: fetch()向后转。但我不认为你可以简单地重置&#34;光标在开头,再次使用fetchAll()。