首页 > 解决方案 > 调用“mysqli_stmt_prepare”时是否应该手动检查错误?

问题描述

我正在使用 PHP 和 mysqli 准备好的语句。执行时是否有令人信服的理由手动检查错误mysqli_stmt_prepare()?更具体地说,我不只是询问准备语句行的最终结果。

$sql = "SELECT * FROM `users`;";
$stmt = mysqli_stmt_init($db);
mysqli_stmt_prepare($stmt, $sql); // How should I check for error in here
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);

PHP 手册将这一行和仅这一行放在一个if语句中。

$sql = "SELECT * FROM `users`;";
$stmt = mysqli_stmt_init($db);
if (mysqli_stmt_prepare($stmt, 'SELECT * FROM `users`;')) {
    mysqli_stmt_execute($stmt);
    $result = mysqli_stmt_get_result($stmt);
}

我想知道在 mysqli 中使用准备好的语句时如何正确检查错误。是否有充分的理由手动检查该函数的返回值,如手册中所示?

标签: phpmysqli

解决方案


是否有充分的理由手动检查该函数的返回值,如手册中所示?

不,没有。

Mysqli 可以自动检查错误,您只需要求它这样做。
将 mysqli 配置为在每次出错时抛出异常,您将不再需要手动检查任何 mysqli 函数是否有错误!

因此,在前面添加以下行mysqli_connect()

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

就这样!

请注意,您必须以正确的方式处理可能出现的错误。您可以在我的文章PHP 错误报告中了解它


推荐阅读