質問: $mysqli->prepare($sql)) { $stmt->bind_param("ii", $product_id,$user_id); $stmt->execute(); $stmt->free_result(); $stmt->close(); } ``` 上記のように、ON DUPLICATE KEYを用いてINSERT or UPDATEの処理を行っています。 `table`がもつフィールドは`product_id`(int),`user_id`(int),`is_bought`(boolean)の3つのみで、`product_id`(int),`user_id`(int)で複合主キーが設定してあります。 クエリを実行した際、行われた処理がINSERTだったのか、UPDATEだったのかが知りたいのですが、うまい方法はないものでしょうか? (現在は事前に`product_id`,`user_id`でSELECTした結果行数の有無で判断しています。)
回答: 1行だけの処理なら、LAST_INSERT_ID()でidを比較すれば判断できるのではないでしょうか。 複数データの場合については、トライした人がおられるので参考に。 [MySQL] INSERTしたデータのIDを取得したい 性能の追求が厳しくなく、細かく処理したいなら、insert/updateの分岐を自前で処理する方が良さげですけど。