微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Doctrine DBAL 2.13 $statement->execute() 返回 bool而不是 Result

如何解决Doctrine DBAL 2.13 $statement->execute() 返回 bool而不是 Result

自从 Doctrine DBAL 2.13 发布以来,已添加了如 here 所述的弃用。

虽然旧的获取结果的方式是这样的:

$statement->execute();
while (($row = $statement->fetch()) !== false) {
}

方法是这样的:

$result = $statement->execute();
while (($row = $result->fetchAssociative()) !== false) {
}

我想更新我的代码以准备用于学说/dbal 3.0,但是 $statement->execute() 不返回结果集而只是一个布尔值,所以没有什么可迭代的,即使发行说明指出:

DBAL 3.0 从 Statement API 中提取所有 fetch-methods 并移动 将它们添加到从 Statement::execute 返回的新 Result API。我们 已将此 A​​PI 向后移植到 2.13

这是否意味着向后移植失败了还是我遗漏了什么?

解决方法

doctrine/dbal 2.13.1 更新(2021 年 4 月发布)并使用:

$result = $statement->executeQuery();
while (($row = $result->fetchAssociative()) !== false) {
}

请注意,executeQuery() 应该用于获取结果对象,因为 execute() 现在也已弃用。 (这在发行说明中也没有)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。