sql >> データベース >  >> RDS >> Mysql

PHP PDOは、重複キー挿入時に例外をスローしません

    2018年の更新:DEVはこれをバグとは見なしませんが、意図した動作です。したがって、PHP-ユーザーはそれを受け入れる必要があります。今後の質問がある場合はレポートを閉じます...

    これは、PDOのバグとして報告されることがよくあります。 : https://bugs.php.net/bug.php?id=61613

    FIRST の場合にのみ、例外がスローされます ステートメントが無効です。最初のステートメントがスムーズに実行されれば、エラーは発生しません-そして最初のステートメントは有効です:

    INSERT INTO `a` (`b`, `c`) VALUES
      (1, 1),
      (2, 2),
      (3, 2);
    

    回避策として-またはユーザー削除によると それを行う正しい方法-行セットを1つずつ処理する必要があります(バグレポートのコメントから取得):

    $pdo->beginTransaction();
    try {
        $statement = $pdo->prepare($sql);
        $statement->execute();
        while ($statement->nextRowset()) {/* https://bugs.php.net/bug.php?id=61613 */};
        $pdo->commit();
    } catch (\PDOException $e) {
        $pdo->rollBack();
        throw $e;
    }
    



    1. データベースモデリング:Amazonのような製品を分類する方法は?

    2. あるサーバーから別のサーバーにテーブルを更新するにはどうすればよいですか?

    3. MySQLのInnoDBとMyISAMとは何ですか?

    4. このPDOコードはSQLインジェクションからどのように保護しますか?