简体   繁体   English

PDOStatement在foreach循环php中

[英]PDOStatement in foreach loop php

There is a following code: 有以下代码:

<?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. 该代码按预期工作,但我不理解其背后的逻辑。

I've read on php.net that PDO::query() returns a PDOStatement object as a result set. 我已经在php.net上阅读到PDO::query()返回一个PDOStatement对象作为结果集。 So teoretically, this part: $db->query("SELECT * FROM names") is a PDOStatement object. 从技术上讲,这部分: $db->query("SELECT * FROM names")是一个PDOStatement对象。

How does foreach loop through an PDOStatement object? foreach如何在PDOStatement对象中循环? Does it convert the PDOStatement object to an associative array? 它将PDOStatement对象转换为关联数组吗? Why isn't this part: $db->query("SELECT * FROM names") as $row giving errors? 为什么不是这部分: $db->query("SELECT * FROM names") as $row提供错误?

PDOStatement实现了Traversable接口,这意味着它可以在foreach循环内使用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM