當利用 MySQLi 執行 SQL 查詢時,有效處理錯誤報告至關重要。在提供的程式碼片段中,stmt_init() 方法的回傳值用於偵測SQL 準備期間的錯誤,出現了一個揮之不去的疑問:
prepare 語句的回傳值是否僅指示SQL 中的錯誤語句準備還是執行錯誤?
為了闡明這一點,請考慮以下替代錯誤處理方法:
if($stmt_test->execute()) $errorflag=true;
此程式碼在語句執行期間檢查錯誤。但是,沒有必要實作此額外檢查,因為prepare()方法的傳回值包含準備錯誤和執行錯誤。
為了確保全面的錯誤報告,建議將以下行新增至您的連線程式碼:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
這可以報告所有 mysqli 錯誤。這樣一來,您就可以不需要檢查回傳值並直接編寫語句,如下例所示:
$stmt = $mysqli->prepare("INSERT INTO testtable VALUES (?,?,?)"); $stmt->bind_param('iii', $x, $y, $z); $stmt->execute();
任何階段發生錯誤都會拋出 PHP 例外。可以像任何其他 PHP 錯誤一樣處理或報告此異常。透過適當配置 PHP 錯誤報告,您可以確保錯誤在開發過程中顯示在螢幕上並記錄在生產伺服器上。
以上是MySQLi 的`prepare()`傳回值僅指示準備錯誤還是也指示執行錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!