現在の位置: ホーム> 最新記事一覧> mysqli_stmt :: prepareのmysqlエラーコードを取得するにはどうすればよいですか?

mysqli_stmt :: prepareのmysqlエラーコードを取得するにはどうすればよいですか?

gitbox 2025-06-07

データベース操作にPHPのMySQLI拡張機能を使用する場合、 MySQLI_STMT :: PREPAREは、 SQLステートメントを前処理するための重要な方法です。前処理ステートメントはセキュリティと効率を向上させることができますが、準備の実行中に、SQLステートメントにエラーがある場合、特定のMySQLエラーコードを取得する方法を理解することはデバッグに非常に重要です。この記事では、mysqli_stmt :: prepareが実行され、関連する手順が実行されたときに生成されたmysqlエラーコードを取得する方法を詳細に紹介します。


1. mysqli_stmt :: prepareを理解します

mysqli_stmt :: prepareメソッドは、SQLステートメントを前処理するために使用されます。前処理が成功しているかどうかを示すブール値を返します。失敗した場合、関連する属性またはメソッドを使用してエラー情報とエラーコードを取得できます。

 $stmt = $mysqli->stmt_init();
if (!$stmt->prepare("YOUR SQL HERE")) {
    // 前処理に失敗しました
}

2。エラーコードのプロパティと方法を取得します

mysqli_stmtオブジェクトは、エラー情報を取得するために2つの重要なメンバーを提供します。

  • $ stmt-> errno :エラーコード(エラー番号)を取得する

  • $ stmt->エラー:エラーメッセージを取得します

さらに、オブジェクト$ mysqliを接続することにより、グローバルエラーコードと情報を取得することもできます。


3.特定のステップサンプルコード

以下は、障害が発生したときにエラーコードとエラーメッセージを作成して取得する方法を示すサンプルコードです。

 <?php
$mysqli = new mysqli("gitbox.net", "username", "password", "database");

// 接続が成功しているかどうかを確認してください
if ($mysqli->connect_errno) {
    die("接続に失敗しました,エラーコード: " . $mysqli->connect_errno . ",エラーメッセージ: " . $mysqli->connect_error);
}

// プリプロセシングステートメントオブジェクトを初期化します
$stmt = $mysqli->stmt_init();

// 前処理 SQL 声明(エラーをトリガーするために、ここに違法に書き込みます)
$sql = "SELEC * FROM users"; // 間違っている SQL,SELECT エラースペル

if (!$stmt->prepare($sql)) {
    echo "前処理に失敗しました!" . PHP_EOL;
    echo "エラーコード: " . $stmt->errno . PHP_EOL;
    echo "エラーメッセージ: " . $stmt->error . PHP_EOL;
} else {
    echo "前処理成功!" . PHP_EOL;
}

$stmt->close();
$mysqli->close();
?>

4。説明

  • 上記のコードでは、 Selectは意図的にSELECとして綴られており、準備メソッドはFALSEを返します。

  • $ stmt-> errnoおよび$ stmt->エラーを介して、詳細なエラーコードとエラーの説明を取得します。

  • 接続が失敗したら、 $ mysqli-> connect_errnoおよび$ mysqli-> connect_errorを使用してエラー情報を取得します。


5。概要

MySQLI_STMT ::準備中に生成されたMySQLエラーコードを取得すると、主にMySQLI_STMTオブジェクトのerrno属性に依存します。エラー属性と組み合わせることで、問題をすばやく見つけ、デバッグを容易にすることができます。各呼び出しの後に返品値を検出して準備することをお勧めし、障害時にエラーコードとエラー情報をすぐに読み取ることをお勧めします。