调用“mysqli_stmt_prepare”时是否应该手动检查错误?

Should I manually check for errors when calling "mysqli_stmt_prepare"?

提问人:plsankar 提问时间:6/5/2020 最后编辑:Braiamplsankar 更新时间:2/9/2022 访问量:692

问:

我正在使用 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中使用预准备语句时如何正确检查错误。是否有充分的理由手动检查手册中所示的该函数的返回值?

PHP MySQLI

评论


答:

4赞 Your Common Sense 6/5/2020 #1

是否有充分的理由手动检查该返回值 手册中显示的功能?

不,没有。

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

因此,请在mysqli_connect()

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

仅此而已!

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