php - 调用“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 中使用准备好的语句时如何正确检查错误。是否有充分的理由手动检查该函数的返回值,如手册中所示?
解决方案
是否有充分的理由手动检查该函数的返回值,如手册中所示?
不,没有。
Mysqli 可以自动检查错误,您只需要求它这样做。
将 mysqli 配置为在每次出错时抛出异常,您将不再需要手动检查任何 mysqli 函数是否有错误!
因此,在前面添加以下行mysqli_connect()
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
就这样!
请注意,您必须以正确的方式处理可能出现的错误。您可以在我的文章PHP 错误报告中了解它