0

我不太了解 PDOStatement 的意义,因为:

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

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

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

4

2 回答 2

0

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

$results = $PDOS->fetchAll();

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

于 2011-03-04T14:51:13.210 回答
0

PDOStatement一个迭代器。

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

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

于 2018-04-14T12:01:48.523 回答