PHP | rollback() Function

PHP rollback() Function


Hello folks! welcome back to a new edition of our tutorial on PHP. In this tutorial guide, we are going to be studying about the PHP mysqli_rollback() Function.

The PHP mysqli_rollback() function rolls the current transaction to the last save point or the specified save point.

Syntax

Following below is the syntax to use this function -

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


Parameter Details

Sr.NoParameter & Description
1

con(Mandatory)

This is an object representing a connection to MySQL Server.

2

flags(Optional)

A constant which can be on of the following :

  • MYSQLI_TRANS_COR_AND_CHAIN

  • MYSQLI_TRANS_COR_AND_NO_CHAIN

  • MYSQLI_TRANS_COR_RELEASE

  • MYSQLI_TRANS_COR_NO_RELEASE

3

name(Optional)

This is a name value which when given, executes as ROLLBACK/*name*/ .


Return Value

This built-in PHP function returns true if the operation is successful otherwise, false on failure.

PHP Version

This PHP function was first introduced in PHP version 5 and works in all the later versions.

Example1

The following example shows the usage of the built-in mysqli_rollback() function (in a procedural style) -

<?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, 'Kennedy', 'Nkpara', 'PortHarcourt', 'Nigeria')");
   mysqli_query($con, "insert into my_team values(2, 'Jonathan', 'Trott', 'CapeTown', 'SouthAfrica')");
   mysqli_query($con, "insert into my_team values(3, 'Queen', 'Dauglas', 'Texas', 'UnitedStates')");
   mysqli_query($con, "insert into my_team values(4, 'Paul', 'Francis', 'Texas', 'UnitedStates')");

   $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);
?>

Output

When the above code is executed, it will produce the following result -

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

Example2

In object oriented style the syntax of this built-in PHP function is $con->rollback(); Following is the example of this function in an object oriented style $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('Kennedy', 'Nkpara', 'Nigeria')");
$con->query("insert into players values('Jonathan', 'Trott', 'SouthAfrica')");

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

$con->query( "insert into players values('Queen', 'Dauglas', 'UnitedStates')");
$con->query( "insert into players values('Bethel', 'Igwela', 'Nigeria')");

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

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


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

Output

When the above code is executed, it will produce the following result -

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

Example3

Try the following example below -

<?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 ('Precious', 25)");

   mysqli_commit($connection);
   
   mysqli_query($connection, "INSERT INTO test VALUES ('Stephanie', 24)");
   
   mysqli_rollback($connection);
   mysqli_close($connection);
?>

Output

When the above code is executed, if you verify the contents of the table test, you can see the inserted records as shown below -

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


Alright guys! This is where we are going to be rounding up for this tutorial post. In our next tutorial, we are going to be discussing about the mysqli_select_db() Function in PHP.

Do feel free to ask your questions where necessary and we will attend to them as soon as possible. If this tutorial was helpful to you, you can use the share button to share this tutorial.

Do follow us on our various social media handles available and also subscribe to our newsletter to get our tutorial posts delivered directly to your emails.

Thanks for reading and bye for now.