私はトランザクションの中にまとめたPHPスクリプトの中にいくつかのmySQLクエリを持っています。同じ接続で複数のクエリで最後に挿入されたIDを取得するにはどうすればよいですか?
各クエリの最後に挿入されたIDを取得したいのですが、最後に挿入されたIDがそのまま残っているため、最初のIDのみが有効です(効果的に1つの大きなクエリとして扱われるためです接続)。
これらは私のクエリです:
$conectarDB->beginTransaction();
$a = $conectarDB->prepare(" INSERT INTO usuarios SET userEmail =?, userName =? WHERE userID=? ");
$a->bindParam(1, $userEmail);
$a->bindParam(2, $userApellido);
$a->bindParam(3, $userID);
$a->execute();
$pago1 = $conectarDB->lastInsertId();
$b = $conectarDB->prepare(" INSERT INTO versionesUsuarios SET userID=?, userEmail=? ");
$b->bindParam(1, $userID);
$b->bindParam(2, $userEmail);
$b->execute();
$pago2 = $conectarDB->lastInsertId();
$conectarDB->commit();
これを解決する方法は?どのように取得する$pago1
と$pago2
実行後に 'lastInsertId'を呼び出すので、これはうまくいくはずです。コミット後に行うと '0'を返します。 'PDO :: ATTR_EMULATE_PREPARES'の有無にかかわらず、それらは異なるテーブルと同じIDであり、偶然同じIDを持ちます。 – fyrye
ただし、最初のINSERTにパラメータがありません。 'userID'が必要ですので、' $ a-> bindParam(3、$ userID); ' – fyrye
ありがとう! (欠落しているパラメータを修正しました。ありがとうございます!) – Rosamunda