ホームページ > バックエンド開発 > 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() の戻り値は、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート