моя процедура mysql уже вставляет, я хотел бы вернуть последний вставленный идентификатор - PullRequest
0 голосов
/ 25 августа 2011

Мои процедуры MySQL уже вставляет правильно:

это мой php-код, вызывающий процедуру:

$sql = 'CALL insert_menu(?,?,?,?,?)';
        try {
                  $query = $bd->prepare($sql);
                  $query->bindParam(1,$name, PDO::PARAM_STR);
                  $query->bindParam(2,$catsup, PDO::PARAM_INT);
                  $query->bindParam(3,$level, PDO::PARAM_INT);
                  $query->bindParam(4,$link, PDO::PARAM_STR);
                  $query->bindParam(5,$title, PDO::PARAM_STR);
                  $query->execute();
        } catch (PDOException $e) {
                echo $e->getMessage();
        }

и это моя процедура:

CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_menu`(
IN p_cat_name VARCHAR(100),
IN p_cat_sup_cod INT,
IN p_cat_level INT,
IN p_link VARCHAR(200),
IN p_title VARCHAR(100)
)
BEGIN
IF ((p_cat_name <> '')&&(p_cat_level <> '')&&(p_link <> '')&&(p_title <> '')) THEN
INSERT INTO access (access_id,menu_descr,sup_cod,level,menu_link,menu_title)
VALUES ('',p_cat_name,p_cat_sup_cod,p_cat_level,p_link,p_title);
END IF;
END;

Я бы хотел, чтобы моя процедура возвращала php последний вставленный идентификатор ... Я тоже не знаю, как получить результат с PDO подготовить ... Прошу помощи у всех, спасибо ...

Ответы [ 2 ]

0 голосов
/ 25 августа 2011

Поскольку вы используете PDO:

try {
    $bd->prepare('SELECT LAST_INSERT_ID()');
    $bd->execute();
} catch(PDOException $e) {
    echo $e->getMessage();
}

Но для этого действительно не требуется подготовка, поэтому вы можете просто использовать:

try {
    $results = $bd->query('SELECT LAST_INSERT_ID() as last');
    $lastID = $results[0]['last'];
} catch(PDOException $e) {
    echo $e->getMessage();
}
0 голосов
/ 25 августа 2011

Попробуйте:

SELECT LAST_INSERT_ID()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...