如果我使用这个SQL:
UPDATE formulare SET EV_id=59, EV_status=5 WHERE EV_id=57 AND ID_uziv=12;SELECT LAST_INSERT_ID();
我将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.
我的表formualre
有auto increment
列,所以我不知道问题是什么
答案 0 :(得分: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();
注意:我猜,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();
答案 1 :(得分:2)
上一次查询为AUTO_INCREMENT列生成的ID 成功,如果上一个查询没有生成AUTO_INCREMENT,则 0 值,如果没有建立MySQL连接则为FALSE。
由于您的更新未创建新记录,因此未生成任何AUTO_INCREMENT值。
答案 2 :(得分:1)
UPDATE查询更新现有记录,它不会返回任何新ID。
mysqli_insert_id retrieves the ID generated for an AUTO_INCREMENT column by the
previous query (usually INSERT).
没有INSERT查询,这就是原因,在执行UPDATE查询后你不会得到任何ID。
有关详细信息,请参阅mysql_insert_id