提问人:amd_123 提问时间:10/26/2022 最后编辑:Your Common Senseamd_123 更新时间:12/3/2022 访问量:253
如何在mysqli中捕获一个特定的mysql错误?
How to catch one specific mysql error in mysqli?
问:
我在 try 块中有一个mysqli_query,如下所示:
try {
mysqli_query($db,$sql);
}
catch (Exception $e) {
throw $e;
}
我正在尝试捕获“PHP 致命错误:未捕获mysqli_sql_exception:数据太长,无法进行列...”错误,所以我可以在页面上显示 PHP 消息。目前,由于这是一个致命的错误,它只会使脚本崩溃,我无法显示任何内容。
我尝试放入一个尝试捕获块,但问题仍然存在。我在其他地方读到该设置可能会有所帮助,我尝试将其放在查询之前,但它不会改变任何内容。mysqli_query($db,$sql);
mysqli_report(MYSQLI_REPORT_ALL);
有什么想法吗?
答:
-2赞
Your Common Sense
10/27/2022
#1
在 SQL 查询执行周围使用 try catch 是合理的时,这种情况很少见。
为了处理一个特定的 SQL 错误,您可以在块中添加一个查找特定错误的条件,使用 或 ,然后,如果找到,请按照您喜欢的方式处理它。否则,所有其他错误将在其他地方以通常的方式处理:catch
getCode()
getMessage()
throw $e;
try {
mysqli_query($db,$sql);
}
catch (mysqli_sql_exception $e) {
if (str_starts_with($e->getMessage(),"Data too long for column")) {
// handle the error
} else {
throw $e;
}
}
评论