0
私は(PDOを使用して)トランザクションを実行していますが、しかし私は、たとえば、トランザクションの最初の要素の挿入IDを取得する必要があり:mysqlトランザクション - 挿入と選択を組み合わせてlast_insert_idを達成しましたか?
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
を
トランザクションの最初の要素から最後の挿入IDを取得する方法はありますか?おそらく次のようなものを使用してください:
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'];
私は完全に昼食をとっていますか?これを行うより良い方法はありますか?提案に基づいて
EDIT 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;
が
ああ、そのように行うことを考えたことはありません選択 、ありがとうございました!ただし、PDOを使用して値をどのくらい正確に取得できますか?私がstatement-> fetchAll()を試して結果を表示すると、私は笑って空の配列を返します: –