テーブルに挿入するために REPLACE INTO クエリを使用していますが、mysql_query() 関数を使用してクエリを実行した後、last_insert_id() を使用すると値が 0 しか返されません。
なぜこれが起こっているのですか?どうすればこの動作を克服できますか。
:パンカジ
テーブルに挿入するために REPLACE INTO クエリを使用していますが、mysql_query() 関数を使用してクエリを実行した後、last_insert_id() を使用すると値が 0 しか返されません。
なぜこれが起こっているのですか?どうすればこの動作を克服できますか。
:パンカジ
INSERT INTO ... ON DUPLICATE KEY UPDATE
代わりに使用してみてください。と同じことを実現しREPLACE INTO
ますが、単一のサーバー側操作で実現します。REPLACE INTO
古いものを削除し、新しいものを挿入するという 2 つの操作が発生する可能性があります。
ただし、クエリの種類に関係なく、テーブルの主キーがauto_increment
フィールドであることを確認する必要があります。それ以外の場合、last_insert_id() は正しく機能しません。
REPLACE INTO
経由で取得できる値には影響しないようですlast_insert_id()
。
これから判断すると、予想される動作のようです。