Я выполняю транзакцию (используя 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;