Po zavolání "beginTransaction" zavolejte "execute".
Kde nazýváte „připravte se“, je vlastně jedno.
Zde je úplný příklad:
http://php.net/manual/en/pdo.begintransaction.php
PŘÍKLAD:
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) Předpokládám samozřejmě, že $user_input a $user_input_2 jsou okamžitě dostupné. Nechcete, aby vaše transakce visela otevřená zbytečně dlouho;)
2) Na základě vaší výše uvedené odpovědi na komentář se domnívám, že si možná pletete „provést“ a „zahájit trans/commit“. Podívejte se prosím na můj odkaz.
3) Potřebuješ to vůbec? transakce? Děláte jen dva "výběry".
4) Nakonec, proč neudělat jedno „připojení“ (nebo spojení, je-li kompatibilní) místo dvou „výběrů“?