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

重複エントリをチェックするか、PDOerrorInfo結果を使用するか

    try catchブロックを使用してこれを実行できます:

    try {
       $prep->execute($values);
       // do other things if successfully inserted
    } catch (PDOException $e) {
       if ($e->errorInfo[1] == 1062) {
          // duplicate entry, do something else
       } else {
          // an error other than duplicate entry occurred
       }
    }
    

    「INSERTIGNORE」や「INSERT...ON DUPLICATE KEY UPDATE」などの代替案を調べることもできますが、これらはMySQL固有であり、PDOを使用することの移植性に反すると思います。 。

    編集:あなたの質問にもっと正式に答えるために、私にとって、ソリューション#1(防御プログラマー)を完全に使用すると、そもそも固有の制約のポイントが効果的に排除されます。したがって、MySQLにデータチェックを任せるというあなたの考えに同意します。



    1. SQL Serverの2つの日付の間のすべての週の開始日と終了日を取得するにはどうすればよいですか?

    2. SQLで文字列の一部を置き換える方法

    3. フィルター処理されたインデックスと強制パラメーター化(redux)

    4. postgresのUPDATERETURNING句から選択できません