Keep in mind this bug: https://bugs.php.net/bug.php?id=66528
you could not rely on commit() return value while using MySql
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDO::commit — Valide une transaction
PDO::commit() valide une transaction, remet la connexion
en mode autocommit
en attendant l'appel à la fonction
PDO::beginTransaction() pour débuter une nouvelle transaction.
Cette fonction ne contient aucun paramètre.
Une exception PDOException sera lancée si aucune transaction n'est active.
Note: Une exception sera émise même si l'attribut
PDO::ATTR_ERRMODE
ne vaut pasPDO::ERRMODE_EXCEPTION
.
Exemple #1 Valide une transaction basique
<?php
/* Commence une transaction, désactivation de l'auto-commit */
$dbh->beginTransaction();
/* Insérer plusieurs enregistrements sur une base tout-ou-rien */
$sql = 'INSERT INTO fruit
(name, colour, calories)
VALUES (?, ?, ?)';
$sth = $dbh->prepare($sql);
foreach ($fruits as $fruit) {
$sth->execute(array(
$fruit->name,
$fruit->colour,
$fruit->calories,
));
}
/* Valider les modifications */
$dbh->commit();
/* La connexion à la base de données est maintenant de retour en mode auto-commit */
?>
Exemple #2 Committing a DDL transaction
<?php
/* Commence une transaction, désactivation de l'auto-commit */
$dbh->beginTransaction();
/* Modification du schéma de la base de données */
$sth = $dbh->exec("DROP TABLE fruit");
/* Valide les modifications */
$dbh->commit();
/* La connexion à la base de données est maintenant de retour en mode auto-commit */
?>
Note: Toutes les bases de données n'autorisent pas les transactions à fonctionner sur des déclarations DDL: certaines vont générer des erreurs, tandis que d'autres (y compris MySQL) vont automatiquement valider la transaction après que la première déclaration DDL aura été rencontré.
Keep in mind this bug: https://bugs.php.net/bug.php?id=66528
you could not rely on commit() return value while using MySql