現在の位置: ホーム> 最新記事一覧> $ errnoを使用して、さまざまなSQL障害タイプのテストを自動化します

$ errnoを使用して、さまざまなSQL障害タイプのテストを自動化します

M66 2025-05-28

PHPでMySQLデータベースを使用する場合、SQLクエリの実行時にエラーが発生する可能性があります。これらのエラーの配置を容易にするために、 mysqli :: $ errnoによって提供されるエラーコードを使用して、障害の原因を決定し、それに応じて処理できます。この記事では、MySQLI :: $ errnoを使用して、さまざまなタイプのSQL実行障害を自動的に識別およびテストする方法を紹介します。

1。MySqli :: $ errnoを理解します

mysqli :: $ errnoは、最近実行されたMySQLクエリのエラーコードを含む属性です。異なるタイプのエラーを表す整数値を返します。これは開発者にとって非常に便利であり、SQLを実行するときに問題を見つけるのに役立ちます。

通常、 mysqli :: $ errnomysqli :: $ errorが一緒に使用され、後者はエラーが発生したときにエラーメッセージを返し、前者はエラーの特定のエラーコードを提供します。この情報を通じて、SQLエラーはそれに応じて処理できます。

2。一般的なMySQLエラーコード

いくつかの一般的なmysqlエラーコードの例とその意味を次に示します。

エラーコードエラーの説明
1045拒否されたアクセス(アクセス許可なし)
1064 SQL構文エラー
1146テーブルは存在しません
1054列は存在しません
1062重複するエントリ(一意の制約違反)

SQLクエリを実行すると、 mysqli :: $ errnoを介してこれらのエラーコードを確認し、それに応じて処理できます。

3. mysqli :: $ errnoを使用して、エラーを処理します

まず、MySQLデータベースに接続するインスタンスが必要で、SQLクエリを実行してエラーがあるかどうかを確認します。これがサンプルコードです:

 <?php
$mysqli = new mysqli("localhost", "user", "password", "database");

if ($mysqli->connect_error) {
    die("接続に失敗しました: " . $mysqli->connect_error);
}

$query = "SELECT * FROM non_existent_table"; // 意図的に書かれた間違ったテーブル名
$result = $mysqli->query($query);

if (!$result) {
    // クエリが失敗した場合,エラーコードとエラー情報を取得します
    echo "エラーコード: " . $mysqli->errno . "<br>";
    echo "エラーメッセージ: " . $mysqli->error . "<br>";

    // 根据エラーコード做不同的处理
    switch ($mysqli->errno) {
        case 1045:
            echo "アクセス許可はありません,データベースユーザーの許可を確認してください。";
            break;
        case 1064:
            echo "SQL 構文エラー,クエリの構文を確認してください。";
            break;
        case 1146:
            echo "テーブルは存在しません,テーブル名を確認してください。";
            break;
        case 1054:
            echo "列は存在しません,列名を確認してください。";
            break;
        case 1062:
            echo "エントリを繰り返します,一意の制約の違反。";
            break;
        default:
            echo "その他のエラー,チェックしてください。";
    }
} else {
    // クエリが成功しました,処理結果
    while ($row = $result->fetch_assoc()) {
        echo "データ: " . $row['column_name'] . "<br>";
    }
}

$mysqli->close();
?>

上記のコードでは、SQL実行が失敗した場合、エラーコードとエラーメッセージが最初に印刷されます。次に、 mysqli :: $ errnoの値に基づいて、スイッチステートメントを介してエラータイプを判断し、特定のエラープロンプトを提供します。

4.エラーテストにはmysqli :: $ errnoを使用します

意図的にエラーを導入することにより、mysqli :: $ errnoの効果をテストできます。たとえば、次の一般的なエラーを試すことができます。

  • エラーテーブル名:クエリテーブルが存在しない場合、MySQLはエラーコード1146を返します(テーブルは存在しません)。

  • エラーSQL構文:構文エラーは通常1064エラーコードを返します。

  • 許可の問題:データベースユーザーに十分な権限がない場合、エラーコード1045が返されます。

テスト中、SQLクエリステートメントを変更してこれらのエラーをトリガーし、 MySqli :: $ errnoを介して対応するエラーコードを取得できます。

5。例:URLテストで失敗したSQLクエリ

一部の複雑なSQLクエリでは、URLまたは外部データソースを使用する場合があります。外部リソースがクエリに関与している場合、次のような方法を使用して、URLが有効かどうかを確認できます。

  • 関連タグ:

    SQL