Maison > développement back-end > tutoriel php > Comment démarrer et terminer des transactions dans MySQLi ?

Comment démarrer et terminer des transactions dans MySQLi ?

DDD
Libérer: 2024-12-06 21:13:12
original
915 Les gens l'ont consulté

How Do I Start and End Transactions in MySQLi?

Démarrer et terminer une transaction dans MySQLi

Lors de l'utilisation de MySQL, il est essentiel de comprendre le fonctionnement des transactions. Les transactions servent à regrouper plusieurs requêtes et à garantir qu'elles sont exécutées de manière atomique, ce qui signifie que toutes ou aucune des requêtes réussissent.

Démarrer une transaction

Dans MySQLi, une transaction est initiée en désactivant le mode autocommit à l’aide de l’instruction autocommit(FALSE). La validation automatique est le comportement par défaut de MySQL, ce qui signifie que chaque requête est exécutée indépendamment et immédiatement. En désactivant la validation automatique, vous activez le contrôle des transactions, vous permettant de regrouper plusieurs requêtes et de les exécuter comme une seule unité.

Terminer une transaction

Après avoir regroupé les requêtes souhaitées au sein de la transaction, vous devez explicitement y mettre fin. Il existe deux façons de terminer une transaction :

  1. Commit : Si toutes les requêtes de la transaction ont été exécutées avec succès sans erreur, vous pouvez terminer la transaction en utilisant la méthode commit(). Cela enregistrera définitivement toutes les modifications apportées au cours de la transaction dans la base de données.
  2. Rollback : Si l'une des requêtes de la transaction a échoué, vous pouvez annuler la transaction en utilisant la méthode rollback() . Cela annulera toutes les modifications apportées au cours de la transaction, ramenant la base de données à son état avant le début de la transaction.

Exemple

Considérez l'extrait de code PHP suivant :

<?php
// Database connection
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

// Start transaction
$mysqli->autocommit(FALSE);

// Queries within the transaction
$mysqli->query('UPDATE `table` SET `column` = 1');
$mysqli->query('UPDATE `table1` SET `column1` = 2');

// Commit or rollback
if ($allQueriesExecutedSuccessfully) {
  $mysqli->commit();
} else {
  $mysqli->rollback();
}
?>
Copier après la connexion

Dans cet exemple, le mode autocommit est désactivé en utilisant autocommit(FALSE), initiant une transaction. Plusieurs requêtes sont exécutées au sein de la transaction. En fonction de l'état d'exécution, la transaction est soit validée, soit annulé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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal