現在の位置: ホーム> 最新記事一覧> mysqli_stmt :: $エラーを介してSQLステートメントのエラーメッセージを取得する方法

mysqli_stmt :: $エラーを介してSQLステートメントのエラーメッセージを取得する方法

gitbox 2025-05-28

PHPでは、 MySQLIは一般的に使用されるデータベース拡張機能であり、データベースと対話する複数の方法を提供します。 MySQLI_STMTクラスは、Preprocessingステートメントの実行に使用されるMySQLI拡張機能の一部です。一般的な要件は、SQLクエリを実行するときにエラーメッセージをキャプチャおよび表示して、開発者が問題をデバッグおよび修正できるようにすることです。この記事では、mysqli_stmt :: $エラーを介してSQLステートメントを実行するときに詳細なエラー情報を取得する方法を紹介します。

1。MySQLI_STMT :: $エラーを使用して、エラー情報を取得します

前処理ステートメントを使用する場合、 MySQLI_STMTオブジェクトを介してクエリを実行できます。 mysqli_stmt :: $ error変数は、クエリを実行するときにエラー情報を保存します。 SQLの実行が成功した場合、値は空の文字列です。 SQLの実行が失敗した場合、エラー説明が返されます。

サンプルコード

以下は、mysqli_stmt :: $エラーを使用する方法を示す簡単な例です。SQLクエリの実行時にエラー情報を取得します。

 <?php
// データベース接続を作成します
$mysqli = new mysqli("localhost", "username", "password", "database_name");

// 接続が成功しているかどうかを確認してください
if ($mysqli->connect_error) {
    die("接続に失敗しました: " . $mysqli->connect_error);
}

// 準備する SQL 声明
$sql = "SELECT * FROM users WHERE id = ?";
$stmt = $mysqli->prepare($sql);

// 检查声明是否準備する成功
if ($stmt === false) {
    die("準備する声明失败: " . $mysqli->error);
}

// バインドパラメーター
$id = 1;
$stmt->bind_param("i", $id);

// クエリを実行します
if (!$stmt->execute()) {
    echo "埋め込む SQL 声明时出错: " . $stmt->error;
} else {
    echo "クエリが成功しました!";
}

// 关闭声明和连接
$stmt->close();
$mysqli->close();
?>

コードの説明

  • コードでは、SQLクエリが実行されたときにエラー情報をキャプチャするために$ stmt->エラーが使用されます。

  • クエリの実行に失敗した場合、 $ stmt->エラーには特定のエラー説明が含まれ、開発者が問題を見つけるのに役立ちます。

  • クエリが正常に実行された場合、 $ stmt->エラーは空の文字列を返します。

2。クエリ実行が失敗した場合、詳細なエラー情報をキャプチャします

$ stmt->エラーを介してエラー情報を取得した後、異なるエラー情報に基づいて異なるデバッグメジャーを実行できます。一般的なエラーには、SQL構文エラー、テーブルまたはフィールド名スペリングエラー、またはパラメーターのバインディングエラーが含まれる場合があります。

例:SQLエラーメッセージとログログをキャプチャします

生産環境では、エラー情報をエンドユーザーに公開しないようにするために、開発者は通常、ページに直接表示するのではなく、ログファイルにエラー情報をログに記録します。

 <?php
// データベース接続を作成します
$mysqli = new mysqli("localhost", "username", "password", "database_name");

// 接続が成功しているかどうかを確認してください
if ($mysqli->connect_error) {
    die("接続に失敗しました: " . $mysqli->connect_error);
}

// 準備する SQL 声明
$sql = "SELECT * FROM users WHERE id = ?";
$stmt = $mysqli->prepare($sql);

// 检查声明是否準備する成功
if ($stmt === false) {
    // ログエラーログ
    error_log("準備する SQL 声明失败: " . $mysqli->error, 3, "/path/to/error_log.txt");
    die("準備する声明失败");
}

// バインドパラメーター
$id = 1;
$stmt->bind_param("i", $id);

// クエリを実行します
if (!$stmt->execute()) {
    // ログエラーログ
    error_log("埋め込む SQL 声明时出错: " . $stmt->error, 3, "/path/to/error_log.txt");
    echo "クエリに失敗しました,ログファイルを確認してください。";
} else {
    echo "クエリが成功しました!";
}

// 关闭声明和连接
$stmt->close();
$mysqli->close();
?>

コードの説明

  • クエリが実行されると、 error_log()関数はエラーメッセージをログファイルに書き込みます。これにより、詳細なエラー情報がエンドユーザーに公開され、アプリケーションのセキュリティが向上しないようになります。

  • エラーログファイルは安全な場所に配置し、開発者または管理者のみがアクセスできるようにする必要があります。

3。概要

mysqli_stmt :: $エラーを介して、SQLクエリを実行するときに詳細なエラー情報を簡単に取得でき、問題をすばやくデバッグして解決できます。開発者は、エラーメッセージを直接表示するか、実際のニーズに基づいてログファイルに記録するかどうかを決定できます。 MySQLI拡張機能を使用する場合、エラー情報のキャプチャは非常に重要な操作であり、アプリケーションの堅牢性とセキュリティを効果的に改善できます。