Kald bare "execute", efter du har kaldt "beginTransaction".
Hvor du kalder "forbered" er ligegyldigt.
Her er et komplet eksempel:
http://php.net/manual/en/pdo.begintransaction.php
EKSEMPEL:
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) Jeg går selvfølgelig ud fra, at $user_input og $user_input_2 er tilgængelige med det samme. Du ønsker ikke, at din transaktion skal hænge unødigt længe åben;)
2) Baseret på dit kommentarsvar ovenfor, tror jeg, at du måske forveksler "eksekvere" og "begynd at overføre/forpligte". Se venligst mit link.
3) Har du overhovedet brug for en transaktion? Du laver bare to "select's".
4) Til sidst, hvorfor ikke lave én "join" (eller union, hvis den er kompatibel) i stedet for to "select'er"?