Po prostu zadzwoń „wykonaj” po wywołaniu „beginTransaction”.
To, gdzie nazwiesz „przygotuj”, nie ma znaczenia.
Oto kompletny przykład:
http://php.net/manual/en/pdo.begintransaction.php
PRZYKŁAD:
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) Zakładam, oczywiście, że $user_input i $user_input_2 są dostępne natychmiast. Nie chcesz, aby Twoja transakcja zawieszała się zbyt długo;)
2) Na podstawie powyższej odpowiedzi na komentarz, myślę, że możesz mylić "wykonaj" i "rozpocznij translację/zatwierdzanie". Proszę spojrzeć na mój link.
3) Czy w ogóle potrzebujesz transakcja? Po prostu robisz dwie "wybierz".
4) Na koniec, dlaczego nie zrobić jednego „dołączenia” (lub unii, jeśli jest to zgodne) zamiast dwóch „wybierz”?