Connexions et gestionnaire de connexion
<<<
Transactions et validation automatique (auto-commit) Requêtes préparées et procédures stockées
>>>

8.101 Fonctions PDO
8 Référence des fonctions
 Manuel PHP

Introduction
Installation
Configuration à l'exécution
Drivers PDO
Connexions et gestionnaire de connexion
->Transactions et validation automatique (auto-commit)
Requêtes préparées et procédures stockées
Erreurs et gestionnaire des erreurs
Les objets larges (LOBs)
Classes pré-définies
Constantes pré-définies
PDO::beginTransaction
PDO::commit
PDO::__construct
PDO::errorCode
PDO::errorInfo
PDO::exec
PDO::getAttribute
PDO::getAvailableDrivers
PDO::lastInsertId
PDO::prepare
PDO::query
PDO::quote
PDO::rollBack
PDO::setAttribute
PDOStatement::bindColumn
PDOStatement::bindParam
PDOStatement::bindValue
PDOStatement::closeCursor
PDOStatement::columnCount
PDOStatement::errorCode
PDOStatement::errorInfo
PDOStatement::execute
PDOStatement::fetch
PDOStatement::fetchAll
PDOStatement::fetchColumn
PDOStatement::getAttribute
PDOStatement::getColumnMeta
PDOStatement::nextRowset
PDOStatement::rowCount
PDOStatement::setAttribute
PDOStatement::setFetchMode

8.101.6 Transactions et validation automatique (auto-commit)

Maintenant que vous êtes connecté via PDO, vous devez comprendre comme PDO gère les transactions avant d'exécuter des requêtes. Si vous n'avez jamais utilisé les transactions, elles offrent 4 fonctionnalités majeures : Automatisme, Consistence, Isolation et Durabilité (ACID). En d'autres termes, n'importe quel travail mené à bien dans une transaction, même s'il est effectué par étapes, est garanti pour être appliqué à la base de données sans risque, et sans interférence pour les autres connexions, quand il est validé. Le travail des transactions peut également être automatiquement annulé à votre demande (en supposant que vous n'avez encore rien validé), ce qui rend la gestion des erreurs bien plus simple dans vos scripts.

Les transactions sont typiquement implémentées pour appliquer toutes vos modifications en une seule fois ; ceci a le bel effet d'éprouver drastiquement l'efficacité de vos mises à jour. Dans d'autres termes, les transactions rendent vos scripts plus rapides et potentiellement plus robuste (vous devez les utiliser correctement pour avoir ces bénéfices).

Malheureusement, toutes les bases de données ne supportent pas les transactions, donc, PDO doit s'exécuter en mode "auto-commit" lorsque vous ouvrez pour la première fois la connexion. Le mode "auto-commit" signifie que toutes les requêtes que vous exécutez ont leurs transactions implicites, si la base de données le supporte ou aucune transaction si la base de données ne les supporte pas. Si vous avez besoin d'une transaction, vous devez utiliser la méthode PDO::beginTransaction pour l'initialiser. Si le driver utilisé ne supporte pas les transactions, une exception PDO sera lançé (en accord avec votre gestionnaire d'erreurs : ceci est toujours une erreur sérieuse). Une fois que vous êtes dans une transaction, vous devez utiliser la fonction PDO::commit ou la fonction PDO::rollBack pour la terminer, suivant le succès de votre code durant la transaction.

Lorsque le script se termine ou lorsque la connexion est sur le point de se fermer, si vous avez une transaction en cours, PDO l'annulera automatiquement. Ceci est une mesure de sécurité afin de garantir le consistence de vos données dans le cas où le script se termine d'une façon inatendue--si vous ne validez pas explicitement la transaction, alors, on présume que quelque chose s'est mal passé et l'annulation de la transaction intervient afin de garantir la sécurité de vos données.

Attention

L'annulation automatique intervient si vous avez initialisé la transaction via PDO::beginTransaction . Si vous avez manuellement exécuté une requête qui commence une transaction, PDO n'a aucun moyen de le savoir et donc, n'annulera pas automatiquement cette transaction si quelque chose s'est mal passé.

Exécution d'un groupe dans une transaction

Dans l'exemple suivant, supposons que nous allons crééer un jeu d'entrées pour un nouvel employé, dont le numéro d'ID sera 23. En plus des données basiques sur cette personne, vous devons également lui enregistrer son salaire. Il est très simple d'effectuer deux mises à jour séparées, mais en les enfermant dans les appels des fonctions PDO::beginTransaction et PDO::commit , nous garantissons que personne ne pourra voir ces modifications tant qu'elles ne seront pas complètes. Si quelque chose tourne mal, le block de capture annulera toutes les modifications effectuées depuis le début de la transaction et affichera un message d'erreur.

Vous n'êtes pas limité dans le nombre de mises à jour dans une transaction ; vous pouvez également y effectuer des requêtes complexes et bien sûr, utiliser ces informations pour construire d'autres mises à jour et requêtes ; durant l'activité de la transaction, vous êtes garantie que personne d'autre ne peut effectuer des modifications alors que vous êtes au milieu de vos modifications. En réalité, ceci n'est pas 100% correct, mais celà reste une très bonne introduction aux transactions.

<< Transactions et validation automatique (auto-commit) >>
Connexions et gestionnaire de connexion Fonctions PDO Requêtes préparées et procédures stockées