这是我的疑问:
INSERT INTO table (value) VALUES (value) ON DUPLICATE KEY UPDATE value=value
使用mysql_insert_id()
我获取新插入的ID,但是如何更新行的ID?
我试过mysql_insert_id()
但是,对于更新的行,我得到0。
答案 0 :(得分:2)
MySQL ON DUPLICATE KEY - last insert id?
“查看此页面:http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html 在页面的底部,他们解释了如何通过将表达式传递给MySQL函数来使LAST_INSERT_ID对更新有意义。“
答案 1 :(得分:0)
没有办法做到这一点。你可以做SELECT id FROM table WHERE value = value;
答案 2 :(得分:0)
好了,因为您已经有WHERE
语句,您可以使用不同的查询选择它。 mysql_insert_id()
完全按照它的说法行事。从INSERT获取ID。
答案 3 :(得分:0)
从MySQL 5.1.12开始,it's possible。 MySQL的last_insert_id函数将返回插入和更新操作的自动增量字段的值。
答案 4 :(得分:0)
您将获得带有mysql_insert_id()php函数的插入ID。
但是当与ON DUPLICATE KEY UPDATE结合使用时,如果希望mysql_insert_id()为您提供已更新的密钥,而不是生成的新密钥,则必须多做一些。
将SQL更改为
INSERT INTO table (value) VALUES (value)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id),value=value;
查看更多信息here