Appelez simplement "execute" après avoir appelé "beginTransaction".
L'endroit où vous appelez "préparer" n'a pas vraiment d'importance.
Voici un exemple complet :
http://php.net/manual/en/pdo.begintransaction.php
EXEMPLE :
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) Je suppose, bien sûr, que $user_input et $user_input_2 sont disponibles immédiatement. Vous ne voulez pas que votre transaction reste ouverte inutilement longtemps ;)
2) Sur la base de votre réponse au commentaire ci-dessus, je pense que vous confondez peut-être "exécuter" et "commencer tran/commit". Veuillez regarder mon lien.
3) Avez-vous même besoin une opération ? Vous faites juste deux "select's".
4) Enfin, pourquoi ne pas faire un "join" (ou union, si compatible) au lieu de deux "select's" ?