PDO::beginTransaction démarre une transaction (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
bool PDO::beginTransaction ( void )
Désactivez le mode de validation automatique. Lorsque le mode de validation automatique est désactivé, les modifications apportées à la base de données via les instances d'objet PDO ne sont pas validées tant que PDO::commit() n'est pas appelé pour terminer la transaction.
L’appel de PDO::rollBack() annulera les modifications apportées à la base de données et ramènera la connexion à la base de données en mode de validation automatique.
Certaines bases de données, notamment MySQL, effectuent automatiquement une validation de transaction implicite lors de l'émission d'une instruction DDL telle que DROP TABLE ou CREATE TABLE.
Une validation implicite vous empêchera d’annuler toute autre modification dans le cadre de cette transaction.
L'exemple suivant démarre une transaction et émet deux instructions qui modifient la base de données avant d'annuler les modifications.
Mais dans MySQL, l'instruction DROP TABLE valide automatiquement la transaction afin que toute modification apportée à cette transaction ne soit pas annulée.
<?php/* Démarrer une transaction et désactiver la soumission automatique*/$dbh->beginTransaction();/* Modifier la structure et les données de la base de données*/$sth = $dbh->exec("DROP TABLE fruit");$ sth = $dbh->exec("UPDATE dessert SET name = 'hamburger'");/* Reconnaître l'erreur et annuler les modifications*/$dbh->rollBack();/* La connexion à la base de données est désormais de nouveau en mode de validation automatique*/?>