foreach 循环中的 PDOStatement php
PDOStatement in foreach loop php
有如下代码:
<?php
include 'connection.php'; //$db is declared here. It's a PDO object.
foreach ($db->query("SELECT * FROM names") as $row) {
echo $row['firstname'] . $row['lastname'] . $row['postcode'] . '<br>';
}
?>
代码按预期工作,但我不明白其背后的逻辑。
我在 php.net 上读到 PDO::query()
returns 一个 PDOStatement
对象作为结果集。
所以理论上,这部分:$db->query("SELECT * FROM names")
是一个 PDOStatement
对象。
foreach
如何遍历 PDOStatement
对象?它是否将 PDOStatement
对象转换为关联数组?为什么这部分没有:$db->query("SELECT * FROM names") as $row
给出错误?
PDOStatement
implements Traversable
接口,这意味着它可以在 foreach
循环中使用。
有如下代码:
<?php
include 'connection.php'; //$db is declared here. It's a PDO object.
foreach ($db->query("SELECT * FROM names") as $row) {
echo $row['firstname'] . $row['lastname'] . $row['postcode'] . '<br>';
}
?>
代码按预期工作,但我不明白其背后的逻辑。
我在 php.net 上读到 PDO::query()
returns 一个 PDOStatement
对象作为结果集。
所以理论上,这部分:$db->query("SELECT * FROM names")
是一个 PDOStatement
对象。
foreach
如何遍历 PDOStatement
对象?它是否将 PDOStatement
对象转换为关联数组?为什么这部分没有:$db->query("SELECT * FROM names") as $row
给出错误?
PDOStatement
implements Traversable
接口,这意味着它可以在 foreach
循环中使用。