我在 try 块中有一个 mysqli_query ,如下所示:
try {
mysqli_query($db,$sql);
}
catch (Exception $e) {
throw $e;
}
我想抓住一个
PHP 致命错误:未捕获 mysqli_sql_Exception:数据太长 专栏...
错误,以便我可以在页面上显示 PHP 消息。目前,由于这是一个致命错误,它只会使脚本崩溃,并且我无法显示任何内容。
我尝试将
mysqli_query($db,$sql);
放入 try/catch
块中,但问题仍然存在。我在其他地方读到设置 mysqli_report(MYSQLI_REPORT_ALL);
可能会有所帮助 - 我尝试将其放在查询之前,但它不会改变任何内容。
有什么想法吗?
在 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;
}
}