English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La fonction mysqli_rollback() rétrograde la transaction actuelle
La base de données MySQL a la fonction de soumission automatique des transactions. Si vous la活性化, les modifications apportées à la base de données seront automatiquement sauvegardées; si vous la désactivez, vous devez utiliser la fonction mysqli_commit() pour sauvegarder explicitement les modifications.
mysqli_rollback()La fonction roule la transaction actuelle au dernier point de sauvegarde (ou au point de sauvegarde spécifié).
mysqli_rollback($con, [$flags, $name]);
Numéro | Paramètres et descriptions |
---|---|
1 | con (obligatoire) C'est un objet qui représente la connexion au serveur MySQL. |
2 | flags (optionnel) peut être l'un des constantes suivantes :
|
3 | name (optionnel) C'est un nom de valeur, lorsqu'il est donné, il est utilisé comme ROLLBACK /* name */ exécuter. |
La fonction mysqli_rollback() retourne une valeur booléenne, si l'opération est réussie, alorstrue,sinonfalse.
Cette fonction a été initialement introduite dans la version PHP5introduit et est disponible dans toutes les versions supérieures.
Le following exemple montremysqli_rollback()Utilisation de la fonction (style procédural)-
<?php //Établir la connexion $con = mysqli_connect("localhost", "root", "password", "mydb"); //Définir l'auto-commit sur false mysqli_autocommit($con, False); mysqli_query($con, "CREATE TABLE IF NOT EXISTS my_team(ID INT, First_Name VARCHAR(255), Last_Name VARCHAR(255), Place_Of_Birth VARCHAR(255), Country VARCHAR(255))»; //Insérer les enregistrements dans la table my_team mysqli_query($con, "insert into my_team values(1, 'Shikhar', 'Dhawan', 'Delhi', 'India')"); mysqli_query($con, "insert into my_team values(2, 'Jonathan', 'Trott', 'CapeTown', 'SouthAfrica')"); mysqli_query($con, "insert into my_team values(3, 'Kumara', 'Sangakkara', 'Matale', 'Srilanka')"); mysqli_query($con, "insert into my_team values(4, 'Virat', 'Kohli', 'Delhi', 'India')"); $res = mysqli_query($con, «SELECT * FROM my_team); print(«Nombre de lignes (à la soumission): ».mysqli_affected_rows($con).«\n»); //Enregistrer les modifications mysqli_commit($con); //Tronquer la table mysqli_query($con, «DELETE FROM my_team where id in(3,4); $res = mysqli_query($con, «SELECT * FROM my_team); print(«Nombre de lignes (avant rollback): ».mysqli_affected_rows($con).«\n»); //retour mysqli_rollback($con); //Contenu de la table $res = mysqli_query($con, «SELECT * FROM my_team); print(«Nombre de lignes (après rollback): ».mysqli_affected_rows($con)); //Fermer la connexion mysqli_close($con); ?>
Résultat de la sortie
Nombre de lignes (à la soumission): 4 Nombre de lignes (avant rollback): 2 Nombre de lignes (après rollback): 4
La syntaxe de cette méthode en style orienté objet est$con->rollback();Voici un exemple de cette fonction dans un style orienté objet;
//Établir la connexion $con = new mysqli(«localhost», «root», «password», «mydb»); //Définir l'auto-commit sur false $con->autocommit(FALSE); //Insérer un enregistrement dans la table players $con->query(«CREATE TABLE IF NOT EXISTS players(First_Name VARCHAR(255), Last_Name VARCHAR(255), Country VARCHAR(255))»; $con->query(«insert into players values('Shikhar', 'Dhawan', 'India')»; $con->query(«insert into players values('Jonathan', 'Trott', 'SouthAfrica')»; //Enregistrer les résultats $con->commit(); $con->query(「insert into players values('Kumara', 'Sangakkara', 'Srilanka')»; $con->query(「insert into players values('Virat', 'Kohli', 'India')»; //retour $con-> rollback(); $res = $con-> query("SELECT * FROM players); print_r($res); //Fermer la connexion $res = $con -> close(); ?>
Résultat de la sortie
mysqli_result Object ( [current_field] => 0 [field_count] => 3 [lengths] => [num_rows] => 2 [type] => 0 )
Désactiver l'auto-commit, effectuer des requêtes, soumettre les requêtes, puis rollback la transaction en cours :
<?php $connection = mysqli_connect("localhost", "root", "password", "mydb"); if (mysqli_connect_errno($connection)){ echo "连接MySQL失败: " . mysqli_connect_error(); } mysqli_autocommit($connection, FALSE); mysqli_query($connection, "create table test(Name VARCHAR(255), Age INT); mysqli_query($connection, "INSERT INTO test VALUES ('Sharukh', 25); mysqli_commit($connection); mysqli_query($connection, "INSERT INTO test VALUES ('Kalyan', 30); mysqli_rollback($connection); mysqli_close($connection); ?>
执行以上程序后,如果验证表test的内容,则可以看到插入的记录为-
mysql> select * from test; +---------+------+ | Nom | Âge | +---------+------+ | Sharukh | 25 | +---------+------+ 1 row in set (0.00 sec)