English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
mysqli_commit()函数提交一个事务
MySQL数据库具有一项称为自动提交事务(如果您将其打开),则数据库中所做的更改将自动保存;如果将其关闭,则需要显式保存更改。
mysqli_commit()函数保存当前的事务。
mysqli_commit($con, [$flags, $name]);
序号 | 参数及说明 |
---|---|
1 | con (obligatoire) C'est un objet représentant 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 sera exécuté avec COMMIT /* name */pour exécuter. |
La fonction mysqli_commit() renvoie une valeur booléenne, qui esttrue,sinonfalse.
Cette fonction a été initialement introduite dans la version PHP5introduit dans les versions et est disponible dans toutes les versions supérieures.
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) );
Voici un exemple qui montremysqli_commit()Utilisation de la fonction (style procédural)-
<?php //Établir la connexion $con = mysqli_connect("localhost", "root", "password", "mydb"); //Définir le commit automatique sur false mysqli_autocommit($con, False); //Insérer l'enregistrement 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')"); //Vérifier le contenu de la table $result = mysqli_query($con, "SELECT * FROM my_team"); print_r($result); mysqli_commit($con); //关闭连接 mysqli_close($con); ?>
Résultat de la sortie
mysqli_result Object ( [current_field] => 0 [field_count] => 5 [lengths] => [num_rows] => 4 [type] => 0 )
Si vous vérifiez le contenu de la table my_team, vous pouvez observer les données enregistrées, comme suit-
mysql> select * from my_team; +----+------------+------------+----------------+-------------+ | ID | First_Name | Last_Name | Place_Of_Birth | Country | +----+------------+------------+----------------+-------------+ | 1 | Shikhar | Dhawan | Delhi | India | | 2 | Jonathan | Trott | Cape Town | South Africa | | 3 | Kumara | Sangakkara | Matale | Sri Lanka | | 4 | Virat | Kohli | Delhi | India | +----+------------+------------+----------------+-------------+ 4 rows in set (0.00 sec)
Méthode de style orienté objet, syntaxe :}}$con-> commit()Voici un exemple de cette fonction dans un style orienté objet ;
//Établir la connexion $con = new mysqli("localhost", "root", "password", "mydb"); //Définir le commit automatique sur true $con-> autocommit(FALSE); //Insérer l'enregistrement dans la table my_team $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')"); //Vérifier le contenu de la table $result = $con-> query("SELECT * FROM my_team"); print_r($result); //Sauvegarder le résultat $con-> commit(); //关闭连接 $con -> close(); ?>
Résultat de la sortie
mysqli_result Object ( [current_field] => 0 [field_count] => 5 [lengths] => [num_rows] => 4 [type] => 0 )
Laissons voir un autre exemple. Ici, nous avons créé une table, désactivé l'option de commit automatique, inséré un enregistrement et sauvegardé les modifications. Après la sauvegarde, nous avons inséré un autre enregistrement :
//Établir la connexion $con = mysqli_connect("localhost", "root", "password", "mydb"); mysqli_query($con, "Create table players (First_Name VARCHAR(255), Last_Name VARCHAR(255), Country VARCHAR(255))"); //Définir le commit automatique sur false mysqli_autocommit($con, False); //Insérer l'enregistrement dans la table my_team mysqli_query($con, "insert into players values('Shikhar', 'Dhawan', 'India');") mysqli_commit($con); mysqli_query($con, "insert into players values('Jonathan', 'Trott', 'SouthAfrica')"); //关闭连接 mysqli_close($con); ?>
由于我们尚未保存上一个插入查询,因此在执行上述程序后,如果您验证 players 表的内容,则只能看到一条记录,如下所示-
mysql> select * from players; +------------+-----------+---------+ | Prénom | Nom | Pays | +------------+-----------+---------+ | Shikhar | Dhawan | Inde | +------------+-----------+---------+ 1 row in set (0.00 sec)
<?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_query($connection, "INSERT INTO test VALUES ('Kalyan', 30) mysqli_commit($connection); mysqli_close($connection); ?>
执行以上程序后,如果验证表test的内容,则可以看到插入的记录为-
mysql> select * from test; +---------+------+ | Nom | Age | +---------+------+ | Sharukh | 25 | | Kalyan | 30 | +---------+------+ 2 rows in set (0.00 sec)