PDO::commit

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDO::commit Valide une transaction

Description

public PDO::commit(): bool

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.

Liste de paramètres

Cette fonction ne contient aucun paramètre.

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Erreurs / Exceptions

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 pas PDO::ERRMODE_EXCEPTION.

Exemples

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é.

Voir aussi

add a note add a note

User Contributed Notes 1 note

up
8
re_action
9 years ago
Keep in mind this bug: https://bugs.php.net/bug.php?id=66528

you could not rely on commit() return value while using MySql
To Top