【问题标题】:PHP/MySQL Check if not updated because same valuesPHP/MySQL 检查是否没有更新,因为相同的值
【发布时间】: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 很慢,我不想用。那么我在这里有什么选择呢?

提前致谢。

【问题讨论】:

    标签: php mysqli insert


    【解决方案1】:

    INSERT .. ON DUPLICATE KEY 并不慢,是您真正需要的

    【讨论】:

    • 谢谢。我将在 INSERT UPDATE 中转换 INSERT。
    猜你喜欢
    • 2016-02-17
    • 2016-02-13
    • 2021-08-17
    • 1970-01-01
    • 2013-01-04
    • 2011-07-24
    • 2020-07-09
    • 2019-07-12
    • 2020-02-03
    相关资源
    最近更新 更多