PHPでINSERT INTO ON DUPLICATE KEY UPDATEにmysqli :: insert_idを使用しているとき、更新された行が更新されていれば、次の自動インクリメントを取得し続けます。同じデータベースではあるが他のテーブルでは、重複キー更新を使用しているときにこの動作がありません。代わりに、私は更新された行のIDを取得します。しかし、今私が作成した新しいテーブルで何らかの理由で、私は存在しない次のIDを取得し続けます。どちらのテーブルもMyISAMで、自動増分フィールドを持っています。彼らがなぜ違うのか理解できません。mysqli :: insert_idが重複キーで間違ったIDを返す
例:
==================================
Table: example
==================================
id | unique_field | data
==================================
1 | unique1 | 123
2 | unique2 | 456
INSERT INTO
example
SET
unique_field = 'unique1',
data = '321'
ON DUPLICATE KEY UPDATE
data = '321'
// mysqli::insert_id returns 3 (not 1)!!
任意のアイデア? mysql manualから
実際に私が望んでいた結果が得られます。しかし、なぜ私は私が言及した他のテーブルのためにこれを行う必要はありません理解していない。 – quano
例とテーブル構造の両方を投稿できますか? –
申し訳ありませんができません。しかし、もう少し試してみましたが、クエリのUPDATE側のどこかにNOW()を使用すると、IDは更新された行と同じになることに気付きました。とても奇妙です。基本的には、呼び出される関数の点で2つのテーブルが異なるのです - 私はinsert-updateクエリの1つでNOW()を使用し、他のクエリでは使用しません。 – quano