PHP MySQL挿入は、一意の制約のために失敗します
-
02-10-2019 - |
質問
挿入で、私は一意の制約をキャッチしていますmysql_errno()1062。
これは正常に機能しますが、既存の行を見つけて変更または変更したいと思います。
INSERT FALEで行IDを取得する方法はありますか? mysql_insert_id()を試しましたが、挿入している(または挿入しなかった)行を返すだけで、0を取得します。
別のmysql_queryを発行し、重複した値で選択を実行する以外に選択肢はありませんか?
これを行うには、より良い、より速く、より経済的な方法がないことを確認したいだけです。
解決
新規または既存の値を更新する場合、行を挿入しようとしている場合は、 に交換します あなたが必要とするものです。また、考慮してください 挿入...キーアップデート構文の重複に 交換が削除されてから挿入され、挿入されているように関係する制約がある場合。
他のヒント
「ユニークな」キーをテーブルに確認する必要があります(SHOW CREATE TABLE
それらをすべてリストし、試みた挿入クエリの関連する値をテーブルに照会します。したがって、フィールドa、b、c、d、b、cを挿入している場合は、それらに固有のキーがあります。
SELECT id, B, C FROM table WHERE B=$B and C=$C;
所属していません StackOverflow