OUJOOD.COM
La fonction rollback() / mysqli_rollback() en PHP
PHP Version: 5+
PHP Évolution: PHP 5.5 : Ajout des paramètres flags et name
La fonction rollback(), ou mysqli_rollback(), permet d'annuler les modifications effectuées sur une base de données depuis le début de la transaction actuelle.
Définition et utilisation
La fonction rollback() prend en entrée un objet mysqli ou une connexion mysqli. Elle ne renvoie aucune valeur.
Voici un exemple d'utilisation de rollback() en syntaxe orientée objet :
Exemple : 📋 Copier le code
<?php $mysqli = new mysqli('seveur', 'utilisateur, 'motDePasse', 'ma_base_de_données'); if ($mysqli->connect_error) { die("Erreur de connexion : " . $mysqli->connect_error); } // Début de la transaction $mysqli->begin_transaction(); // Exécution de la première requête $mysqli->query("INSERT INTO users (name) VALUES ('John Doe')"); // Exécution de la deuxième requête $mysqli->query("INSERT INTO users (name) VALUES ('Jane Doe')"); // Vérification des résultats if ($mysqli->affected_rows < 2) { // Rollback si l'insertion a échoué $mysqli->rollback(); } else { // Commit si l'insertion a réussi $mysqli->commit(); } $mysqli->close(); ?>
Voici un exemple d'utilisation de rollback() en syntaxe procédurale :
Exemple : 📋 Copier le code
<?php $mysqli = mysqli_connect('seveur', 'utilisateur, 'motDePasse', 'ma_base_de_données'); if (mysqli_connect_errno()) { die("Erreur de connexion : " . mysqli_connect_error()); } // Début de la transaction mysqli_begin_transaction($mysqli); // Exécution de la première requête mysqli_query($mysqli, "INSERT INTO users (name) VALUES ('John Doe')"); // Exécution de la deuxième requête mysqli_query($mysqli, "INSERT INTO users (name) VALUES ('Jane Doe')"); // Vérification des résultats if (mysqli_affected_rows($mysqli) < 2) { // Rollback si l'insertion a échoué mysqli_rollback($mysqli); } else { // Commit si l'insertion a réussi mysqli_commit($mysqli); } mysqli_close($mysqli); ?>
Valeurs possibles et paramètres
La fonction rollback() ne prend aucun paramètre.
Exemples pratiques
Voici un exemple d'utilisation de rollback() avec le paramètre name :
Exemple : 📋 Copier le code
<?php $mysqli = new mysqli('seveur', 'utilisateur, 'motDePasse', 'ma_base_de_données'); if ($mysqli->connect_error) { die("Erreur de connexion : " . $mysqli->connect_error); } // Début de la transaction $mysqli->begin_transaction(); // Sauvegarde d'un point de restauration $mysqli->savepoint("my_savepoint"); // Exécution de la première requête $mysqli->query("INSERT INTO users (name) VALUES ('John Doe')"); // Exécution de la deuxième requête $mysqli->query("INSERT INTO users (name) VALUES ('Jane Doe')"); // Vérification des résultats if ($mysqli->affected_rows < 2) { // Rollback de la deuxième requête $mysqli->rollback("my_savepoint"); } else { // Commit si l'insertion a réussi $mysqli->commit(); } $mysqli->close(); ?>
Dans cet exemple, si la deuxième requête échoue, la première requête ne sera pas annulée.
Astuces et conseils d'utilisation pratique
* La fonction rollback() est utile pour protéger les modifications effectuées sur une base de données en cas d'erreur. * Il est important de noter que la fonction rollback() annule toutes les modifications effectuées depuis le début de la transaction actuelle. * Si vous souhaitez annuler uniquement les modifications effectuées depuis la dernière fois que vous avez appelé savepoint(), vous pouvez utiliser la fonction rollback() avec le paramètre name.
Conclusion
La fonction rollback() est une fonction importante pour gérer les transactions en PHP. Elle permet d'annuler les modifications effectuées sur une base de données en cas d'erreur. Il est important de bien comprendre son fonctionnement pour l'utiliser de manière efficace.