LAST_INSERT_ID无法处理UPDATE

kou*_*bin 1 php sql last-insert-id

如果我使用这个SQL:

UPDATE formulare SET EV_id=59, EV_status=5 WHERE EV_id=57 AND ID_uziv=12;SELECT LAST_INSERT_ID();
Run Code Online (Sandbox Code Playgroud)

我会得到0最后一个插入ID.我正在使用PHP mysqli_insert_id,这里说:

The mysqli_insert_id() function returns the ID generated by a query 
on a table with a column having the AUTO_INCREMENT attribute. 
If the last query wasn't an INSERT or UPDATE statement 
or if the modified table does not have a column with the AUTO_INCREMENT attribute, 
this function will return zero. 
Run Code Online (Sandbox Code Playgroud)

我的表formualreauto increment列,所以我不知道问题是什么

Jak*_*zak 6

LAST_INSERT_ID()如果没有创建新的自动增量值,则无法工作.

解决方案是这样的:

UPDATE formulare SET EV_id=LAST_INSERT_ID(59), EV_status=5 WHERE EV_id=57 AND ID_uziv=12;SELECT LAST_INSERT_ID();
Run Code Online (Sandbox Code Playgroud)

注意:我猜,这EV_id是auto_increment主键.

否则你应该做一个像这样的查询:

UPDATE formulare SET key_col = LAST_INSERT_ID(key_col), EV_id=59, EV_status=5 WHERE EV_id=57 AND ID_uziv=12;SELECT LAST_INSERT_ID();
Run Code Online (Sandbox Code Playgroud)

  • 在执行“INSERT ... ON DUPLICATE KEY UPDATE”查询以在更新行时获取“id”时,它也非常有帮助。甚至文档也提到了这个技巧。:) (2认同)