如何在 mysqli 中捕获一个特定的 mysql 错误?

问题描述 投票:0回答:1

我在 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);
可能会有所帮助 - 我尝试将其放在查询之前,但它不会改变任何内容。

有什么想法吗?

php mysql exception mysqli
1个回答
-2
投票

在 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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.