Maison >développement back-end >tutoriel php >Comment gérer efficacement les transactions MySQL en PHP ?

Comment gérer efficacement les transactions MySQL en PHP ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-19 10:41:16131parcourir

How to Manage MySQL Transactions Effectively in PHP?

Exemples de transactions PHP MySQL

Les transactions en PHP et MySQL vous permettent de regrouper un ensemble de requêtes en une seule unité de travail atomique. Cela signifie que si l'une des requêtes échoue, toutes les modifications apportées par la transaction sont annulées.

Comment utiliser les transactions

Pour utiliser les transactions en PHP et MySQL, vous devrez :

  1. Démarrer une transaction en appelant mysql_query("SET AUTOCOMMIT=0") et mysql_query("START TRANSACTION").
  2. Exécutez vos requêtes.
  3. Si toutes les requêtes réussissent, validez la transaction en appelant mysql_query("COMMIT").
  4. Si l'une des requêtes échoue, annulez la transaction en appelant mysql_query("ROLLBACK").

Exemple

Voici un exemple simple de la façon d'utiliser les transactions en PHP et MySQL :

mysql_query("SET AUTOCOMMIT=0");
mysql_query("START TRANSACTION");

$a1 = mysql_query("INSERT INTO rarara (l_id) VALUES('1')");
$a2 = mysql_query("INSERT INTO rarara (l_id) VALUES('2')");

if ($a1 and $a2) {
    mysql_query("COMMIT");
} else {        
    mysql_query("ROLLBACK");
}

Dans cet exemple, l'instruction COMMIT n'est exécutée que si $a1 et $a2 réussissent. Si l'une des requêtes échoue, l'instruction ROLLBACK est exécutée.

Utilisation de transactions avec PDO

La classe PDO offre une manière plus moderne et orientée objet de travailler avec Transactions MySQL. Pour utiliser des transactions avec PDO, vous devrez :

  1. Créer un objet PDO et définir l'attribut PDO::ATTR_ERRMODE sur PDO::ERRMODE_EXCEPTION.
  2. Démarrer une transaction en appelant $ pdo->beginTransaction().
  3. Exécutez votre requêtes.
  4. Si toutes les requêtes réussissent, validez la transaction en appelant $pdo->commit().
  5. Si l'une des requêtes échoue, annulez la transaction en appelant $pdo->rollback().

Exemple

Voici un exemple d'utilisation des transactions avec PDO :

try {
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->beginTransaction();

    $pdo->exec("INSERT INTO rarara (l_id) VALUES('1')");
    $pdo->exec("INSERT INTO rarara (l_id) VALUES('2')");

    $pdo->commit();
} catch (\PDOException $e) {
    $pdo->rollback();
    throw $e;
}

Dans cet exemple, la méthode commit() n'est appelée que si les deux requêtes réussissent. Si l'une des requêtes échoue, la méthode rollback() est appelée et une exception est levée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn