我不太了解 PDOStatement 的意义,因为:
$PDO = new PDO();
$PDOS = $PDO->query($sql);
var_dump($PDOS->fetchAll()); //will return data
var_dump($PDOS->fetchAll()); //empty
是否需要传递一个参数,以便第二次 fetchAll 返回数据,但无需再次执行 SQL?
我不太了解 PDOStatement 的意义,因为:
$PDO = new PDO();
$PDOS = $PDO->query($sql);
var_dump($PDOS->fetchAll()); //will return data
var_dump($PDOS->fetchAll()); //empty
是否需要传递一个参数,以便第二次 fetchAll 返回数据,但无需再次执行 SQL?
只需将第一次调用的结果存储fetchAll()
到 PHP 变量中。你有什么理由不能这样做?
$results = $PDOS->fetchAll();
然后,您可以$results
根据需要尽可能多地使用数据库,而不会进一步增加数据库的负担。
有PDOStatement
一个迭代器。
PDOStatement::fetch()
将遍历行集。调用fetchAll()
迭代器时位于最后一行。
此迭代器仅沿 1 个方向移动。返回的唯一方法是再次执行查询。这是数据库的本质,PHP 不应将整个行集保存在内存中。