現在の位置: ホーム> 最新記事一覧> mysqli :: $ errnoを使用する方法mysqlがデータを挿入するときに重複するプライマリキーエラーをキャプチャする(エラー番号1062)?

mysqli :: $ errnoを使用する方法mysqlがデータを挿入するときに重複するプライマリキーエラーをキャプチャする(エラー番号1062)?

M66 2025-06-02

PHPでMySQLデータベースを使用する場合、データを挿入する際にいくつかの一般的なエラーが発生する可能性があります。そのうちの1つは主要なキー競合エラーです。つまり、既存のプライマリキー値を挿入しようとすると、MySQLはエラー(通常はエラー番号1062)が返されます。

MySQLI拡張機能を使用する場合、 MySQLI :: $ errnoを介してこれらのエラーをキャッチできます。 mysqli :: $ errno属性は、最後のmysqlクエリによって返されたエラー番号を保存します。このプロパティを通じて、主要な主要な競合を簡単に検出し、それに応じてそれらを処理できます。

データを挿入するときに、重複するプライマリキーエラー(エラー番号1062)をキャプチャする方法を示す簡単な例を示します。

サンプルコード:

 <?php
// データベース接続構成
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "my_database";

// 接続を作成します
$conn = new mysqli($servername, $username, $password, $dbname);

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

// データを挿入します SQL 声明
$sql = "INSERT INTO users (id, username) VALUES (1, 'new_user')";

// 埋め込む SQL クエリ
if ($conn->query($sql) === TRUE) {
    echo "新しいレコード挿入に正常に";
} else {
    // 重複したプライマリキーエラーであるかどうかを確認してください(エラー番号 1062)
    if ($conn->errno == 1062) {
        echo "間違い: プライマリキー値を複製します。";
    } else {
        echo "間違い: " . $conn->error;
    }
}

// 接続を閉じます
$conn->close();
?>

コード解析:

  1. データベース接続:最初に、新しいmysqli()を使用してデータベース接続を作成します。データベースのホスト名、ユーザー名、パスワード、データベース名を提供します。接続が失敗した場合、プログラムはエラーメッセージで終了します。

  2. SQL挿入ステートメントユーザーテーブルに新しいレコードを挿入する簡単な挿入ステートメントを書きました。 ID列が主キーであり、挿入しようとするID値が1であると仮定します。

  3. SQLクエリを実行$ conn-> query($ sql)を使用してSQL挿入操作を実行します。挿入が成功した場合、返品値は真であり、挿入の迅速なメッセージが成功します。

  4. キャッチエラー:挿入が失敗した場合(一次競合など)、 $ conn-> errnoはエラー番号を返します。この例では、 $ conn-> errno1062であるかどうかを確認します。これは、MySQLで繰り返される主要なキーエラーのエラー番号です。重複したプライマリキーエラーの場合、特定のエラーメッセージ「鈍いプライマリキー値」を出力します。別のタイプのエラーの場合、MySQLによって返されたエラーメッセージが表示されます。

  5. 接続の接続:操作が完了した後、 $ conn-> close()を使用してデータベース接続を閉じてリソースをリリースします。

まとめ:

mysqli :: $ errnoを使用することにより、MySQLエラー、特に一般的な重複する一次キーエラー(エラー番号1062)を簡単にキャッチおよび処理できます。この方法は、プログラムの堅牢性を改善し、プライマリキーの重複によって引き起こされるプログラムのクラッシュやエラーを回避するのに役立ちます。

処理ロジックをさらに改善したい場合は、挿入のスキップ、既存のレコードの更新、より詳細なエラーメッセージの返却など、重複するプライマリキーエラーをキャッチするときに、より適切なアクションを実行できます。