php PDOStatement fetchAll第二次

时间:2011-03-04 14:48:04

标签: php pdo pdostatement

我真的不明白PDOStatement的意义,因为:

$PDO = new PDO(); 
$PDOS = $PDO->query($sql);

var_dump($PDOS->fetchAll()); //will return data 
var_dump($PDOS->fetchAll()); //empty

是否需要传递一个参数,以便第二次fetchAll返回数据,但不再执行SQL?

2 个答案:

答案 0 :(得分:0)

将结果首次调用fetchAll()存储到PHP变量中。你有什么理由不能这样做吗?

$results = $PDOS->fetchAll();

然后,您可以根据需要尽可能多地使用$results,而不会对数据库产生任何进一步的负担。

答案 1 :(得分:0)

PDOStatement有一个迭代器。

PDOStatement::fetch()将迭代行集。 调用fetchAll()时,迭代器位于最后一行。

此迭代器仅在1个方向上移动。返回的唯一方法是再次执行查询。这是数据库的本质,PHP不应该将整个行集保留在内存中。