问题描述
有以下代码:
<?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>';
}
?>
代码按预期工作,但我不理解其背后的逻辑.
The code works as expected, but I don't understand the logic behind it.
我在php.net上阅读到, PDO :: query()
返回一个 PDOStatement
对象作为结果集.从技术上讲,这部分: $ db-> query("SELECT * FROM names")
是一个 PDOStatement
对象.
I've read on php.net that PDO::query()
returns a PDOStatement
object as a result set.So teoretically, this part: $db->query("SELECT * FROM names")
is a PDOStatement
object.
foreach
如何遍历 PDOStatement
对象?是否会将 PDOStatement
对象转换为关联数组?为什么没有这部分: $ db-> query("SELECT * FROM names")as $ row
给出错误?
How does foreach
loop through an PDOStatement
object? Does it convert the PDOStatement
object to an associative array? Why isn't this part: $db->query("SELECT * FROM names") as $row
giving errors?
推荐答案
PDOStatement
实现 Traversable
接口,这意味着它可以在 foreach
循环内使用.
这篇关于PDOStatement在foreach循环php中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!