使用预处理语句执行插入查询后获取自增id

6
如果我使用php和mysqli_*函数执行存储过程的插入查询,是否有办法检索自增id字段的值?mysqli->insert_id似乎不起作用。

也许您可以发布您的表定义。或者再次检查是否设置了“auto_increment”。 - Till
4个回答

8
你确定你上一次执行的查询是INSERT吗?
看起来mysqli->insert_id是正确的答案:
返回值: 前一个查询更新的AUTO_INCREMENT字段的值。如果连接中没有先前的查询或查询未更新AUTO_INCREMENT值,则返回零。

你说得对,我的代码中有一个错误。实际上,mysqli->insert_id也可以与预处理语句一起使用。谢谢。 - Davide Gualano

1
你可以尝试这样制作一个查询到MySql的语句:
SELECT LAST_INSERT_ID()

不确定它是否适用于存储过程。


1

在插入操作之后,您可以在存储过程中添加此语句:

   SET @saved_id = LAST_INSERT_ID()

在调用该存储过程后,执行此查询:

   SELECT @saved_id

0

mysqli->insert_id(其中mysqli代表您的数据库连接)必须在插入后直接使用。如果在尝试读取insert_id之前在同一连接上运行其他查询,则会返回0。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接