Bel gewoon "uitvoeren" nadat u "beginTransaction" hebt gebeld.
Waar je 'voorbereiden' noemt, maakt niet echt uit.
Hier is een compleet voorbeeld:
http://php.net/manual/en/pdo.begintransaction.php
VOORBEELD:
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) Ik neem natuurlijk aan dat $user_input en $user_input_2 onmiddellijk beschikbaar zijn. Je wilt niet dat je transactie onnodig lang open blijft staan ;)
2) Op basis van je reactie hierboven, denk ik dat je "uitvoeren" en "begin tran/commit" door elkaar haalt. Kijk alsjeblieft op mijn link.
3) Heb je zelfs nodig een transactie? Je doet gewoon twee "select's".
4) Tot slot, waarom zou u niet één "join" (of vakbond, indien compatibel) doen in plaats van twee "select's"?