Я выполняю транзакцию (используя PDO), однако мне нужно захватить идентификатор вставки первого элемента в транзакции, например:
BEGIN INSERT INTO user (field1,field2) values (value1,value2) INSERT INTO user_option (user_id,field2) values (LAST_INSERT_ID(),value2); COMMIT;
Затем сделайте материал pdo:
[...] $pdo->execute(); $foo = $pdo->lastInsertId(); // This needs to be the id from the FIRST insert
Есть ли способ получить последний идентификатор вставки из первого элемента транзакции? Возможно, используя что-то вроде следующего:
BEGIN INSERT INTO user (field1,field2) values (value1,value2) SELECT id AS user_id FROM user WHERE id=LAST_INSERT_ID() INSERT INTO user_option (user_id,field2) values (LAST_INSERT_ID(),value2); COMMIT; $pdo->execute(); $fooArray = $pdo->fetchAll(); $lastId = $fooArray[0]['user_id'];
Я полностью выхожу на обед с ^? Есть лучший способ сделать это?
ИЗМЕНИТЬ 1
Основываясь на предположении, я обновил запрос на использование переменных … однако, я не знаю, как получить значения переменных с помощью PDO. Использование $ stmt-> fetchAll () просто возвращает пустой массив;
BEGIN DECLARE User_ID int DECLARE Option_ID int INSERT INTO user (field1,field2) values (value1,value2); set User_ID = select LAST_INSERT_ID(); INSERT INTO user_option (user_id,field2) values (LAST_INSERT_ID(),value2); set Option_ID = select LAST_INSERT_ID(); select User_ID, Option_ID COMMIT;