Rufen Sie einfach "execute" auf, nachdem Sie "beginTransaction" aufgerufen haben.
Wo Sie "vorbereiten" nennen, spielt keine Rolle.
Hier ist ein vollständiges Beispiel:
http://php.net/manual/en/pdo.begintransaction.php
BEISPIEL:
try {
$cnx = new PDO($dsn,$dbuser,$dbpass);
$cnx->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$cnx->beginTransaction();
$stmt=$cxn->prepare("SELECT * FROM users WHERE username=?");
$stmt->execute(array($user_input));
$stmt_2=$cxn->prepare("SELECT * FROM othertable WHERE some_column=?");
$stmt_2->execute(array($user_input_2));
$cnx->commit();
}
catch (Exception $e){
$cxn->rollback();
echo "an error has occurred";
}
PS:1) Ich gehe natürlich davon aus, dass $user_input und $user_input_2 sofort verfügbar sind. Sie möchten nicht, dass Ihre Transaktion unnötig lange offen bleibt;)
2) Basierend auf Ihrer Kommentarantwort oben, denke ich, dass Sie "execute" und "begin tran/commit" verwechseln könnten. Bitte schau dir meinen Link an.
3) Brauchen Sie überhaupt Brauchen eine Transaktion? Sie machen nur zwei "Auswählen".
4) Warum nicht ein "join" (oder union, falls kompatibel) anstelle von zwei "select's"?