如何解决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。我们 已将此 API 向后移植到 2.13
这是否意味着向后移植失败了还是我遗漏了什么?
解决方法
doctrine/dbal 2.13.1 更新(2021 年 4 月发布)并使用:
$result = $statement->executeQuery();
while (($row = $result->fetchAssociative()) !== false) {
}
请注意,executeQuery() 应该用于获取结果对象,因为 execute() 现在也已弃用。 (这在发行说明中也没有)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。