gpt4 book ai didi

php - PDOStatement 包含什么以及 fetch/fetchAll 的用途是什么?

转载 作者:可可西里 更新时间:2023-11-01 07:32:57 31 4
gpt4 key购买 nike

我无法理解 1) PDOStatement 对象中的内容以及 2) 为什么我需要 fetch() 或 fetchAll() 方法。

我的数据库:一个名为“动物”的简单表格,包含 3 列(id、名称、物种)。

我的代码:

try {
$pdo = new PDO($dsn, $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
exit( $e->getMessage() );
}

try {
$sql = "SELECT * FROM animals";
$results = $pdo->query($sql);
print_r($results);
} catch (PDOException $e) {
echo $e->getMessage();
}

首先,print_r(或 var_dump)打印:PDOStatement Object ( [queryString] => SELECT * FROM animals )

但是如果我这样写:

foreach($results as $row) {
echo $row['id'] . ' ' . $row['name'] . ' ' . $row['species'];
}

我的表格的每个内容都被打印出来了。

所以 1) 如果我的对象中存在该信息,为什么 print_r 不显示任何信息?

2) 为什么我需要 $results->fetch()$results->fetchAll() 来获取我已经从数据库中获取的信息,以及在结果集中 $results?

最佳答案

因为这就是 API 的设计方式,同时考虑到了灵 active 。

您的对象不包含所有数据集。相反 PDOStatement实现 Iterator/Traversable接口(interface),为每个 foreach 操作隐式调用 ->fetch

然而,有些人更喜欢手动使用 ->fetch,或使用 ->fetchAll 一次提取所有行。

关于php - PDOStatement 包含什么以及 fetch/fetchAll 的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19748996/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com