Fonction PHP mysqli_rollback ()

Définition et utilisation

La base de données MySQL a une fonctionnalité nommée auto-commit si vous l'activez, les modifications effectuées dans les bases de données sont enregistrées automatiquement et, si vous la désactivez, vous devez enregistrer les modifications explicitement en utilisant la fonction mysqli_commit ().

le mysqli_rollback() La fonction fait rouler la transaction actuelle jusqu'au dernier point de sauvegarde (ou au point de sauvegarde spécifié).

Syntaxe

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

Paramètres

Sr. Non Paramètre et description
1

con(Mandatory)

Il s'agit d'un objet représentant une connexion à MySQL Server.

2

flags(Optional)

Une constante qui peut être l'une des suivantes:

  • MYSQLI_TRANS_COR_AND_CHAIN

  • MYSQLI_TRANS_COR_AND_NO_CHAIN

  • MYSQLI_TRANS_COR_RELEASE

  • MYSQLI_TRANS_COR_NO_RELEASE

3

name(Optional)

Il s'agit d'une valeur de nom qui, lorsqu'elle est donnée, s'exécute comme ROLLBACK / * nom * / .

Valeurs de retour

La fonction PHP mysqli_rollback () renvoie une valeur booléenne qui est, true si l'opération est réussie et false sinon.

Version PHP

Cette fonction a été introduite pour la première fois dans la version 5 de PHP et fonctionne dans toutes les versions ultérieures.

Exemple

L'exemple suivant montre l'utilisation de la fonction mysqli_rollback () (dans le style procédural) -

<?php
   //Creating a connection
   $con = mysqli_connect("localhost", "root", "password", "mydb");

   //Setting auto commit to 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))");
   //Inserting a records into the my_team table
   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("No.of rows (at the time of commit): ".mysqli_affected_rows($con)."\n");

   //Saving the changes
   mysqli_commit($con);

   //Truncating the table
   mysqli_query($con, "DELETE FROM my_team where id in(3,4)"); 
   $res = mysqli_query($con, "SELECT * FROM my_team");
   print("No.of rows (before roll back): ".mysqli_affected_rows($con)."\n");

   //Roll back
   mysqli_rollback($con);

   //Contents of the table
   $res = mysqli_query($con, "SELECT * FROM my_team");
   print("No.of rows (after roll back): ".mysqli_affected_rows($con));

   //Closing the connection
   mysqli_close($con);
?>

Cela produira le résultat suivant -

No.of rows (at the time of commit): 4
No.of rows (before roll back): 2
No.of rows (after roll back): 4

Exemple

La syntaxe de cette méthode dans le style orienté objet est $ con> rollback () . Voici un exemple de cette fonction en mode orienté objet $ minus;

//Creating a connection
$con = new mysqli("localhost", "root", "password", "mydb");

//Setting auto commit to false
$con->autocommit(FALSE);

//Inserting a records into the players table
$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')");

//Saving the results
$con->commit();

$con->query( "insert into players values('Kumara', 'Sangakkara', 'Srilanka')");
$con->query( "insert into players values('Virat', 'Kohli', 'India')");

//Roll back
$con->rollback();

$res = $con->query("SELECT * FROM players");
print_r($res);


//Closing the connection
$res = $con -> close();
?>

Cela produira le résultat suivant -

mysqli_result Object
(
    [current_field] => 0
    [field_count] => 3
    [lengths] =>
    [num_rows] => 2
    [type] => 0
)

Exemple

<?php
   $connection = mysqli_connect("localhost", "root", "password", "mydb");
   
   if (mysqli_connect_errno($connection)){
      echo "Failed to connect to 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);
?>

Après avoir exécuté le programme ci-dessus si vous vérifiez, le contenu du test de la table , vous pouvez voir les enregistrements insérés comme -

mysql> select * from test;
+---------+------+
| Name    | Age  |
+---------+------+
| Sharukh |   25 |
+---------+------+
1 row in set (0.00 sec)