在使用准备好的语句执行插入查询后获取自动增量 ID
Posted
技术标签:
【中文标题】在使用准备好的语句执行插入查询后获取自动增量 ID【英文标题】:Get autoincrement id after an insert query performed with a prepared statement 【发布时间】:2010-11-29 18:13:30 【问题描述】:如果我使用带有 php 和 mysqli_
* 函数的存储过程执行插入查询,有没有办法检索自动增量 id 字段的值?mysqli->insert_id
似乎不起作用。
【问题讨论】:
也许你可以发布你的表定义。或者仔细检查是否有auto_increment
集。
【参考方案1】:
mysqli->insert_id
(其中mysqli
代表您的数据库连接)
必须在插入后直接使用。如果您在同一连接上运行其他查询
在尝试读取 insert_id
之前,您会返回 0。
【讨论】:
【参考方案2】:您可以在插入后在存储过程中添加此语句:
SET @saved_id = LAST_INSERT_ID()
然后,调用过程后执行这个查询:
SELECT @saved_id
【讨论】:
【参考方案3】:您确定您执行的最后一个查询是 INSERT 吗?
mysqli->insert_id
似乎是正确的答案:
返回值
已更新的
AUTO_INCREMENT
字段的值 由上一个查询。如果返回零 没有以前的查询 连接或者如果查询没有 更新AUTO_INCREMENT
值。
【讨论】:
你是对的,我在我的代码中犯了一个错误,mysqli->insert_id 实际上也适用于准备好的语句。谢谢你..【参考方案4】:您可以尝试像这样创建query to MySql:
SELECT LAST_INSERT_ID()
不确定它是否适用于存储过程。
【讨论】:
以上是关于在使用准备好的语句执行插入查询后获取自动增量 ID的主要内容,如果未能解决你的问题,请参考以下文章