首页 > 后端开发 > php教程 > 如何正确处理MySQLi准备语句中的错误?

如何正确处理MySQLi准备语句中的错误?

Linda Hamilton
发布: 2024-12-12 11:23:09
原创
550 人浏览过

How to Properly Handle Errors in MySQLi Prepared Statements?

MySQLi 准备语句:错误处理说明

在 MySQLi 中使用准备语句时,可能不清楚如何最好地处理错误报告。本文旨在阐明正确的错误处理方法。

prepare() 的返回值与execute()

prepare() 的返回值仅指示是否SQL语句准备成功。它不检测执行错误。因此,还需要检查execute()的返回值。

示例:

if ($stmt_test->prepare("INSERT INTO testtable VALUES (23,44,56)")) {
    if ($stmt_test->execute()) {
        echo "Statement executed successfully.";
    } else {
        echo("Execution failed: " . $stmt_test->error . "<br>");
    }
    $stmt_test->close();
} else {
    echo("Statement preparation failed: " . $stmt_test->error . "<br>");
}
登录后复制

附加错误检查

虽然execute()的返回值可以处理大多数错误,但也建议检查执行后语句的 errno 属性。这可确保捕获执行期间可能发生的任何错误。

示例:

if ($stmt_test->execute()) {
    if (!$stmt_test->errno) {
        echo "Statement executed successfully.";
    } else {
        echo("Additional error occurred: " . $stmt_test->error . "<br>");
    }
    $stmt_test->close();
} else {
    echo("Execution failed: " . $stmt_test->error . "<br>");
}
登录后复制

简化的错误报告

为了大大简化错误报告,您还可以使用 mysqli_report() 函数。通过设置 MYSQLI_REPORT_ERROR 和 MYSQLI_REPORT_STRICT 标志,所有 MySQLi 错误都将报告为 PHP 异常。

示例:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

$stmt = $mysqli->prepare("INSERT INTO testtable VALUES (?,?,?)");
$stmt->bind_param('iii', $x, $y, $z);
$stmt->execute();
登录后复制

此方法无需显式错误检查在你的代码中。

以上是如何正确处理MySQLi准备语句中的错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板