Les transactions sont un aspect crucial de la gestion de base de données, garantissant qu'une séquence d'opérations de base de données est soit entièrement exécuté, soit annulé si une erreur se produit. Avec l'extension mysqli de MySQL pour PHP, les transactions sont gérées via deux fonctions essentielles :
$mysqli->autocommit(FALSE); // Start transaction $mysqli->commit(); // End transaction
Pour lancer une transaction, vous devez appeler $mysqli->autocommit(FALSE );. Cela désactive la validation automatique, vous permettant d'exécuter plusieurs requêtes au sein de la même transaction.
Une fois qu'une transaction est démarrée, vous pouvez exécuter n'importe quel nombre de requêtes à l'intérieur de celle-ci. Cependant, ces requêtes ne seront pas appliquées de manière permanente à la base de données tant que vous n'aurez pas explicitement validé la transaction.
Le $mysqli->commit(); La fonction finalise la transaction et applique toutes les modifications apportées au cours de cette transaction à la base de données. S'il n'y a aucune erreur, la transaction réussit et les modifications deviennent permanentes.
Si une erreur se produit lors d'une transaction ou si vous devez annuler les modifications apportées , vous pouvez appeler mysqli->rollback(); au lieu de mysqli->commit();. Cela annulera toutes les modifications apportées au sein de cette transaction et la base de données reviendra à son état précédent.
L'extrait de code suivant montre comment démarrer et terminer une transaction dans mysqli :
$mysqli->autocommit(FALSE); $mysqli->query("UPDATE `table` SET `col` = 2"); $mysqli->query("UPDATE `table1` SET `col1` = 3"); $mysqli->commit(); // End transaction
Dans cet exemple, les deux instructions de requête sont exécutées au sein de la même transaction. Cependant, aucune modification n'est appliquée à la base de données tant que la transaction n'est pas validée. Si une erreur se produit avant $mysqli->commit(); est appelé, les modifications peuvent être annulées en appelant $mysqli->rollback();.
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!