【发布时间】:2015-10-27 09:00:53
【问题描述】:
在我的User 表中,phone 是唯一的。因此,当我插入重复的电话号码时,我想更新deviceId、registrationId 并且我想要更新的id。我试过了,但它不起作用。
$stmt1 = $db->prepare("INSERT into User (name,phone, deviceId,registrationId) values(:name,:phone, :deviceId,:registrationId) ON DUPLICATE KEY UPDATE deviceId = :deviceId, registrationId = :registrationId, id=lastInsertId(id)");
谢谢你..
【问题讨论】:
-
你的主键是什么?我猜重复更新是使用主键,尝试设置电话号码是你的主键然后尝试。
-
只要您的“电话”值是唯一/主要的,并且如 mysql 文档中所述,这应该可以工作“INSERT INTO table (a,b,c) VALUES (1,2,3) ON重复密钥更新 id=LAST_INSERT_ID(id), c=3;" ..
-
你必须在你的表中添加约束 ON UPDATE 到 NO ACTION 的外键。
-
你能说得更具体些吗,因为“它不工作”不是很清楚。 on duplicate 没有触发,id 没有返回吗?什么?
标签: php mysql prepared-statement