我是一个 php 和 mysql 初学者,我目前正在自学 PDO 并且混淆了一些概念:
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$sql = "SELECT * FROM users";
$users = $dbh->query($sql);
1.PDO类和PDOStatement类是什么关系?
$dbh
是类PDO的新对象,但为什么 $users 是PDOStatement对象?fetchAll()
是类里面的函数PDOStatement
,但是你可以这样使用它$users->fetchAll()
,是$users
aPDO
还是PDOStatement
object?
2.有人说$users是游标,一旦被消费,就不会回退到结果集的开头。
foreach ($users as $row) {
print $row["name"] . "<br/>";
}
但是为什么你可以在foreach
声明中使用它呢?foreach
提供了一种遍历数组的方法。光标实际上是什么?光标是指针吗?
3.对于pdostatement类,文档说:
PDOStatement implements Traversable { ... }
为什么这个类实现 Traversable 接口?是空界面吗?
谢谢你的帮助!