Получить последний идентификатор вставки из последней вставленной строки

Я снова здесь, и я схожу с ума! У меня есть эта хранимая процедура:

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 

как я могу получить последний идентификатор вставки ??? я попробовал все, с параметром out или сделав select с max (id) в таблице или «set last_id = last_insert_id ()», но я не знаю, как получить его через php?

когда я вызываю процедуру в phpmyadmin, я получаю что-то вроде

 @rgt:=number,@lft:=number2 

и в php, очевидно, я получаю тот же результат в массиве.

что я делаю неправильно?

Solutions Collecting From Web of "Получить последний идентификатор вставки из последней вставленной строки"

Вы должны иметь возможность использовать mysql_insert_id‎ получения идентификатора для последнего оператора insert.
Ссылка: http://php.net/mysql_insert_id

Однако функции mysql_* теперь устаревают (читайте ниже), и вы должны использовать эквивалентную функцию или метод mysqli_* . Эквивалентом этой функции будет: $mysqli->insert_id()
Ссылка: http://www.php.net/manual/en/mysqli.insert-id.php

Класс mysql_* устарел, и здесь воспроизводится предупреждение:

Это расширение устарело с PHP 5.5.0 и будет удалено в будущем. Вместо этого следует использовать расширение MySQLi или PDO_MySQL . См. Также MySQL: выбирая руководство по API и связанные с ним FAQ для получения дополнительной информации. Альтернативы этой функции включают:

  • mysqli_insert_id ()
  • PDO :: lastInsertId ()

Если вы используете MySQLi, у вас будет что-то вроде этого.

Процедурный:

 $link = mysqli_connect($db_host, $db_user, $db_pass, $db_table); $query = "INSERT INTO table VALUES($val, $val2, $val3)"; mysqli_query($link, $query); $id = mysqli_insert_id($link); 

ООП:

 $mysqli = new mysql($db_host, $db_user, $db_pass, $db_table); //query $id = $mysqli->insert_id; 

Надеюсь это поможет!

Дайте мне знать, если у вас возникнут проблемы.

Хорошо, я решил это!

Я добавил параметр вывода int, называемый last_id, до того, как конечный тег i включил это утверждение:

 select last_insert_id() into last_id; 

В PHP я выполняю:

 $db -> execQuery('call aggiungi_categoria('.$parametri['id_categoria_principale'].',"'.$parametri['nome'].'","'.$parametri['sigla'].'",'.$parametri['stato'].',@lastId);'); 

и наконец

 $lid = $db ->execQuery('select @lastId;');