現在の位置: ホーム> 最新記事一覧> 構文エラーと接続エラーの違いを検出するために$ errnoを使用する方法

構文エラーと接続エラーの違いを検出するために$ errnoを使用する方法

M66 2025-05-29

PHPでは、 MySQLI拡張機能を使用してMySQLデータベースと対話する場合、いくつかの一般的なエラーに遭遇する可能性があります。これらのエラーの場合、問題を診断するのに役立つMysqli :: $ errnoを介してエラーコードを取得できます。特に、データベース接続エラーとSQL構文エラーを区別することが重要です。この記事では、mysqli :: $ errnoを使用してこれら2つのエラーを区別する方法について説明します。

1。データベース接続エラー

データベース接続エラーは通常、データベースに接続しようとするときに発生します。データベースサーバーにアドレス、ユーザー名、パスワード、またはデータベース名にエラーがある場合、接続は失敗します。この場合、 mysqli :: $ errnoは特定のエラーコードを返し、このコードに基づいて問題を判断できます。

例:データベース接続エラー

<?php
$host = 'localhost';  // データベースサーバーアドレス
$user = 'root';       // データベースのユーザー名
$password = '';       // データベースパスワード
$database = 'test';   // データベース名

// データベース接続を作成します
$conn = new mysqli($host, $user, $password, $database);

// 接続が成功しているかどうかを確認してください
if ($conn->connect_errno) {
    echo "接続エラー: " . $conn->connect_error;
    // によるとerrnoエラータイプを決定します
    if ($conn->connect_errno == 1049) {
        echo "データベースは存在しません!";
    } elseif ($conn->connect_errno == 1045) {
        echo "間違ったユーザー名またはパスワード!";
    }
    exit();
}

echo "データベースに正常に接続します!";
?>

この例では、データベース接続が失敗した場合、 $ conn-> connect_errnoはエラーコードを返します。たとえば、エラーコード1049はデータベースが存在しないことを示し、エラーコード1045はユーザー名またはパスワードが間違っていることを示します。これらのエラーコードを使用すると、問題をより正確に見つけることができます。

2。SQL構文エラー

SQLクエリを実行すると、SQL構文エラーによりクエリが失敗する可能性があります。現時点では、 mysqli :: $ errnoは、 SQLエラーに関連するコードを返します。エラーコードを判断することにより、SQL構文エラーかその他のタイプのエラーかをすばやく区別できます。

例:SQL構文エラー

<?php
$host = 'localhost';
$user = 'root';
$password = '';
$database = 'test';

// データベース接続を作成します
$conn = new mysqli($host, $user, $password, $database);

// 構文エラーを実行しますSQLクエリ
$sql = "SELEC * FROM users";  // 間違い的クエリ:SELEC あるべきです SELECT
$result = $conn->query($sql);

// 診るSQL実行が成功したかどうか
if ($result === false) {
    echo "SQL間違い: " . $conn->error;
    // 判断間違い代码
    if ($conn->errno == 1064) {
        echo "SQL语法間違い!";
    }
    exit();
}

echo "クエリ成功!";
?>

この例では、SQLクエリには構文エラー( SELECが選択される必要があります)があり、 $ conn-> errnoは1064を返し、SQL構文エラーを示します。 mysqli :: $ errnoの値を判断することにより、SQLクエリの問題をすばやく見つけることができます。

3。概要

MySQLI :: $ ERRNOは、データベース接続エラーをSQL構文エラーと区別する効果的な方法を提供します。返されたエラーコードを確認することにより、問題をすばやく診断し、デバッグ時間を短縮できます。

  • データベース接続エラーConnect_Errnoは通常、接続が成功しているかどうかを確認し、エラーコード(ユーザー名またはパスワードエラーなど、データベースが存在しないなど)で異なる接続エラーを区別します。

  • SQL構文エラー:SQLクエリに問題がある場合、 $ conn-> errnoで返されるエラーコードは、構文エラーを認識するのに役立ちます。

これらの2つのエラー処理方法は、データベースの操作をより適切に管理およびデバッグし、コードの堅牢性を向上させるのに役立ちます。