1

テーブルに挿入するために REPLACE INTO クエリを使用していますが、mysql_query() 関数を使用してクエリを実行した後、last_insert_id() を使用すると値が 0 しか返されません。

なぜこれが起こっているのですか?どうすればこの動作を克服できますか。

:パンカジ

4

2 に答える 2

4

INSERT INTO ... ON DUPLICATE KEY UPDATE代わりに使用してみてください。と同じことを実現しREPLACE INTOますが、単一のサーバー側操作で実現します。REPLACE INTO古いものを削除し、新しいものを挿入するという 2 つの操作が発生する可能性があります。

ただし、クエリの種類に関係なく、テーブルの主キーがauto_incrementフィールドであることを確認する必要があります。それ以外の場合、last_insert_id() は正しく機能しません。

于 2010-04-15T14:10:21.220 に答える
3

REPLACE INTO経由で取得できる値には影響しないようですlast_insert_id()

これから判断すると、予想される動作のようです。

于 2010-04-15T10:49:57.487 に答える