Fonction PHP mysqli_commit ()

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.

le mysqli_commit() La fonction enregistre la transaction en cours.

Syntaxe

mysqli_commit($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 COMMIT / * nom * / .

Valeurs de retour

La fonction PHP mysqli_commit () renvoie une valeur booléenne qui est, true si l'opération de validation 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

Supposons que nous ayons créé une table nommée my_team dans la base de données mydb, comme suit -

CREATE TABLE my_team(
   ID INT PRIMARY KEY AUTO_INCREMENT,
   First_Name VARCHAR(255), 
   Last_Name VARCHAR(255), 
   Place_Of_Birth VARCHAR(255), 
   Country VARCHAR(255)
);

L'exemple suivant montre l'utilisation de la fonction mysqli_commit () (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);

   //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')");

   //Verifying the contents of the table
   $result = mysqli_query($con, "SELECT * FROM my_team");
   print_r($result);

   mysqli_commit($con);

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

Cela produira le résultat suivant -

mysqli_result Object
(
    [current_field] => 0
    [field_count] => 5
    [lengths] =>
    [num_rows] => 4
    [type] => 0
)

Si vous et vérifiez le contenu de la table my_team alors, vous pouvez observer les données enregistrées comme indiqué ci-dessous -

mysql> select * from my_team;
+----+------------+------------+----------------+-------------+
| ID | First_Name | Last_Name  | Place_Of_Birth | Country     |
+----+------------+------------+----------------+-------------+
|  1 | Shikhar    | Dhawan     | Delhi          | India       |
|  2 | Jonathan   | Trott      | CapeTown       | SouthAfrica |
|  3 | Kumara     | Sangakkara | Matale         | Srilanka    |
|  4 | Virat      | Kohli      | Delhi          | India       |
+----+------------+------------+----------------+-------------+
4 rows in set (0.00 sec)

Exemple

La syntaxe de cette méthode dans le style orienté objet est $ con> commit () . 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 true
$con->autocommit(FALSE);

//Inserting a records into the my_team table
$con->query( "insert into my_team values(1, 'Shikhar', 'Dhawan', 'Delhi', 'India')");
$con->query( "insert into my_team values(2, 'Jonathan', 'Trott', 'CapeTown', 'SouthAfrica')");
$con->query( "insert into my_team values(3, 'Kumara', 'Sangakkara', 'Matale', 'Srilanka')");
$con->query( "insert into my_team values(4, 'Virat', 'Kohli', 'Delhi', 'India')");

//Verifying the contents of the table
$result = $con->query( "SELECT * FROM my_team");
print_r($result);

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

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

Cela produira le résultat suivant -

mysqli_result Object
(
    [current_field] => 0
    [field_count] => 5
    [lengths] =>
    [num_rows] => 4
    [type] => 0
)

Exemple

Prenons un autre exemple. Ici, nous avons créé une table, désactivé l'option de validation automatique, inséré un enregistrement et enregistré les modifications. Après la sauvegarde, nous avons inséré un autre enregistrement -

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

mysqli_query($con, "Create table players (First_Name VARCHAR(255), Last_Name VARCHAR(255), Country VARCHAR(255))");
//Setting auto commit to false
mysqli_autocommit($con, False);

//Inserting a records into the my_team table
mysqli_query($con, "insert into players values('Shikhar', 'Dhawan', 'India')");

mysqli_commit($con);

mysqli_query($con, "insert into players values('Jonathan', 'Trott', 'SouthAfrica')");

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

Comme nous n'avons pas enregistré la dernière requête d'insertion, après avoir exécuté le programme ci-dessus, si vous vérifiez le contenu de la table des joueurs , vous ne pouvez voir qu'un seul enregistrement, comme indiqué ci-dessous -

mysql> select * from players;
+------------+-----------+---------+
| First_Name | Last_Name | Country |
+------------+-----------+---------+
| Shikhar    | Dhawan    | India   |
+------------+-----------+---------+
1 row in set (0.00 sec)

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_query($connection, "INSERT INTO test VALUES ('Kalyan', 30)");
   
   mysqli_commit($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 |
| Kalyan  |   30 |
+---------+------+
2 rows in set (0.00 sec)