MySQLi プリペアド ステートメント: エラー処理の明確化
MySQLi でプリペアド ステートメントを使用する場合、エラー レポートを処理する最適な方法が不明瞭な場合があります。この記事は、適切なエラー処理アプローチを明確にすることを目的としています。
prepare() の戻り値とexecute() の比較
prepare() の戻り値は、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 中国語 Web サイトの他の関連記事を参照してください。