我又来了,我越来越疯狂! 我有这个存储过程:从最后插入的行中获取最后一个插入ID
CREATE DEFINER=`root`@`localhost` PROCEDURE `aggiungi_categoria`(IN `id_categoria_principale` INT, IN `nome_categoria` VARCHAR(150), IN `sigla_categoria` VARCHAR(10), IN `stato_categoria` INT) NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY DEFINER
begin
select @rgt := rgt,@lft := lft from categorie where id = id_categoria_principale;
if @rgt - @lft = 1 then
UPDATE categorie SET rgt = rgt + 2 WHERE rgt > @lft;
UPDATE categorie SET lft = lft + 2 WHERE lft > @lft;
insert into categorie (nome,sigla,stato,lft,rgt)
values(nome_categoria,sigla_categoria,stato_categoria,@lft+1,@lft+2);
ELSE
UPDATE categorie SET rgt = rgt + 2 WHERE rgt > @rgt-1;
UPDATE categorie SET lft = lft + 2 WHERE lft > @rgt-1;
insert into categorie (nome,sigla,stato,lft,rgt) values
(nome_categoria,sigla_categoria,stato_categoria,@rgt,@rgt+1);
end if;
end
我怎样才能得到最后插入的id ???我尝试了所有,与出param或在表上选择max(id)或“set last_id = last_insert_id()”,但我不知道如何通过PHP获取它?
我的呼唤在phpMyAdmin的程序我越来越像
@rgt:=number,@lft:=number2
,并在PHP很显然,我得到阵列相同的结果。
我做错了什么?
PHP中的mysql_insert_id()'不起作用? (或者如果你使用MySQLi,则使用'$ mysqli-> insert_id') –
它是一个MySQL数据库吗?如果是这样,你使用什么扩展名,例如mysql,mysqli,pdo等? –
@MartinMajer我直接在过程结束时使用它,就像在last_id中选择last_insert_id()或设置set last_id = last_insert_id(),其中last_id是out参数。 –