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