English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base PHP

Tutoriel avancé PHP

PHP et MySQL

Manuel de référence PHP

Utilisation et exemple de la fonction mysqli_rollback() en PHP

PHP MySQLi Référence Manuel

La fonction mysqli_rollback() rétrograde la transaction actuelle

Définition et utilisation

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é).

Syntaxe

mysqli_rollback($con, [$flags, $name]);

Paramètres

NuméroParamè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 :

  • MYSQLI_TRANS_COR_AND_CHAIN

  • MYSQLI_TRANS_COR_AND_NO_CHAIN

  • MYSQLI_TRANS_COR_RELEASE

  • MYSQLI_TRANS_COR_NO_RELEASE

3

name (optionnel)

C'est un nom de valeur, lorsqu'il est donné, il est utilisé comme ROLLBACK /* name */ exécuter.

Valeur de retour

La fonction mysqli_rollback() retourne une valeur booléenne, si l'opération est réussie, alorstrue,sinonfalse.

Version PHP

Cette fonction a été initialement introduite dans la version PHP5introduit et est disponible dans toutes les versions supérieures.

Exemple en ligne

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

Exemple en ligne

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
)

Exemple en ligne

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)

PHP MySQLi Référence Manuel