我对此感到困惑,我运行了一个查询,如
foreach($dbh->query("SELECT * FROM ...") as $row) {
...do something with row()
Run Code Online (Sandbox Code Playgroud)
但是当我var_dump $dbh它是一个PDOstatement对象.
这引出了两个问题:
我当然可以在foreach下运行,并且执行$ arr [] = $ row,但这看起来有点傻.
PHP有一些有趣的接口,可以将对象作为数组处理.在这种情况下,PDOStatement类实现Traversable,这允许使用foreach它.请参见http://www.php.net/manual/en/class.pdostatement.php
要将所有结果放在一个数组中,请查看PDOStatement :: fetchAll.如果遇到问题,也可以考虑在php.net上检查PHP文档.它包含了示例和有用的用户注释.
用于PDOStatement::fetchAll()将整个结果集作为数组.就PDO内部做的而言,它使用迭代器来访问记录集的某些表示.这样你就可以使用更少的内存,因为你没有将整个结果集拉到php中,你使用的东西类似于resource实现内部的东西.