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.