我有一个int类型的ID字段,每当我插入一行时它就会自动递增。
Ismysql_insert_id()在我执行此操作时获取插入的行

mysql_query("call AddUser($user,$pass);");

我想知道它在调用存储过程时是否能得到ID。

最佳答案

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

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查询调用
call p(@InsertId);

然后使用另一个mysqli查询检索结果
select @InsertId as id;

注意-变量在连接的生命周期内有效,因此除非关闭连接,否则可以在方便的时候检索@InsertId的值。
感谢Patchrick添加了PHP细节:
$acct = mysql_query("call p(@InsertId);select @InsertId as id;");
$row = mysql_fetch_array($acct);
echo $row["id"];

10-05 21:33