【发布时间】:2017-10-26 09:01:17
【问题描述】:
我已经研究这个问题两天了,但没有发现对我有用。情况如下:
用户设置了一些数据,如果有该user_id(Primary Key) 的行,则更新该行,如果没有插入该行。到目前为止一切都很好,但是当用户设置相同的值时,它不会更新并且会执行插入查询,这会显示错误,因为该user_id 已经存在一行。
那么如何检测到该行没有更新,因为它具有相同的值并且不执行插入?
目前我的代码是:
UPDATE %s SET %s WHERE `user_id`=%d
if ($this->db->affected_rows() <= 0) {
INSERT...
}
并且由于值相同并且mysqli_affected_rows 返回0 我得到:
Duplicate entry 'xxxxx' for key 'PRIMARY'
从我读到的INSERT IGNORE 不推荐,因为它不显示错误,我需要知道是否有这样的错误。 INSERT ON DUPLICATED KEY 很慢,我不想用。那么我在这里有什么选择呢?
提前致谢。
【问题讨论】: