首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP/mySQL插入,然后通过调用存储过程获得id

问PHP/mySQL插入,然后通过调用存储过程获得id
EN

Stack Overflow用户
提问于 2014-05-07 01:58:56
回答 1查看 1.8K关注 0票数 1

我有一个int类型的ID字段,每当我插入行时,它都会自动递增。

当我这样做时,mysql_insert_id()会得到插入的行

代码语言:javascript
复制
mysql_query("call AddUser($user,$pass);");

我想知道它在调用存储的proc时是否会得到ID。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-07 02:40:53

如果使用的是存储过程,则除非过程本身传递信息,否则无法真正访问该过程中发生的事情。因此,您可以为过程定义一个OUT参数,并返回last_insert_id()值如下:

过程

代码语言:javascript
复制
delimiter $$
drop procedure if exists p$$
CREATE PROCEDURE p(OUT InsertId int) 
BEGIN
insert test.Numbers (Numbers) values (3);
select last_insert_id() into InsertId ;

END$$
delimiter ;

带有mysqli查询的调用

代码语言:javascript
复制
call p(@InsertId);

然后,使用另一个mysqli查询检索结果。

代码语言:javascript
复制
select @InsertId as id;

注意-这些变量在连接的生命周期内存在,因此除非您关闭连接,否则您可以在方便的时候检索@InsertId的值。

感谢Patchrick添加了PHP细节:

代码语言:javascript
复制
$acct = mysql_query("call p(@InsertId);select @InsertId as id;");
$row = mysql_fetch_array($acct);
echo $row["id"]; 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23507442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档