PHP SQL ON DUPLICATE KEY没有任何影响

时间:2012-12-19 01:56:17

标签: php mysql sql

如果没有“名称”和“电子邮件”一起存在的条目,我只想插入。

如果“name”存在不同的电子邮件或反之亦然,那就没关系。

mysql_query("INSERT INTO 
             list (name,email) 
             VALUES ('$name','$email') 
             ON DUPLICATE KEY 
             UPDATE name='$name',email='$email'");

我做了两个名字和电子邮件主键但ON DUPLICATE语句无效。

2 个答案:

答案 0 :(得分:1)

如果名称和电子邮件是组合的唯一键,则在数据集已存在的情况下触发更新语句(使用完全相同的值进行覆盖)是没有意义的。在这种情况下,我实际上只会INSERT,然后检查数据库是否响应键约束违规。这是预期的错误,然后被忽略。还有其他任何错误。

我不会通过这个NO-OP更新来解决这个问题。

答案 1 :(得分:0)

您需要一个复合唯一键才能使ON DUPLICATE KEY UPDATE工作:

CREATE UNIQUE INDEX name_email ON list (name, email);

这就是它调用ON DUPLICATE **KEY** UPDATE

的原因