我已经找到了单独使用mySQL的一些答案,但是我希望有人可以向我展示一种使用PHP处理插入/更新时获取mysql DB最后插入或更新的行的ID的方法。
当前,我有类似这样的内容,其中column3是唯一键,还有一个id列是自动递增的主键:
$query ="INSERT INTO TABLE (column1, column2, column3) VALUES (value1, value2, value3) ON DUPLICATE KEY UPDATE SET column1=value1, column2=value2, column3=value3"; mysql_query($query); $my_id = mysql_insert_id();
$ my_id在INSERT上是正确的,但是在更新行时(在DUPLICATE KEY UPDATE上)是错误的。
我见过一些人建议您使用类似
INSERT INTO table (a) VALUES (0) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id)
在调用ON DUPLICATE KEY时获得有效的ID值-但这会将有效ID返回给PHP mysql_insert_id()函数吗?
mysql_insert_id()
这是亚历山大建议的答案:
当您使用id = LAST_INSERT_ID(id)时,它将设置mysql_insert_id =更新后的ID的值-因此您的最终代码应类似于:
<? $query = mysql_query(" INSERT INTO table (column1, column2, column3) VALUES (value1, value2, value3) ON DUPLICATE KEY UPDATE column1 = value1, column2 = value2, column3 = value3, id=LAST_INSERT_ID(id) "); $my_id = mysql_insert_id();
无论更新或插入,这将为$ my_id返回正确的值。