gpt4 book ai didi

php - 如何正确处理 PDO fetch() 的错误?

转载 作者:可可西里 更新时间:2023-11-01 14:04:18 26 4
gpt4 key购买 nike

fetch() 的错误处理文档似乎不清楚,经过大量搜索后我没有在任何地方找到答案。文档中显示的 fetch 的常见使用模型是:

while ( $row = $stmt->fetch() ) {
// do something with $row
}

PHP 文档位于 http://www.php.net/manual/en/pdostatement.fetch.php说:

In all cases, FALSE is returned on failure.

“失败”是什么意思?一个错误?获取更多行失败?我的问题是:当 fetch() 返回 FALSE 时,检测错误的最佳做法是什么?似乎在循环之后我需要区分错误情况和“没有更多行”的情况。

我应该调用 $stmt->errorCode() 并查看它是否为“00000”吗?

最佳答案

要处理查询错误(获取时不会发生 sql 错误)和更一般的 PDO 错误,您应该尝试使用 PDO::ERRMODE_EXCEPTION。此外,query() 返回的 PdoStatement 实现了 Traversable ,因此您可以跳过使用 fetch() 进行简单查询:

try {
$db = new PDO('sqlite:mydb.db');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Set Errorhandling to Exception
foreach($db->query("SELECT...") as $row)
{
//Do domething
}
$db = null; // "Disconnect"
}
catch (PDOException $err) {
//Handling query/error
}

如果查询遇到错误(不是 fetch()),将抛出异常。

当到达结果集末尾时,Fetch 将始终返回 false。

关于php - 如何正确处理 PDO fetch() 的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11525217/

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