首頁 > 後端開發 > php教程 > 如何正確處理MySQLi準備語句中的錯誤?

如何正確處理MySQLi準備語句中的錯誤?

Linda Hamilton
發布: 2024-12-12 11:23:09
原創
548 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板