English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Функция mysqli_autocommit() открывает или закрывает автоматический режим подтверждения команд на этой текущей сессии подключения к базе данных
MySQL数据库具有一个名为自动提交的特性,如果您打开它,则会自动保存对数据库所做的更改;如果关闭,则需要显式保存更改。mysqli_autocommit() Открывает или закрывает автоматический режим подтверждения команд на этой текущей сессии подключения к базе данных. Чтобы проверить текущий статус автоматического подтверждения транзакции, можно выполнить этот SQL запрос SELECT @@autocommit .
Эта функция принимает булево значение в качестве параметра. Если передатьtrueЕсли передать этому функции, будет включен режим автоматического подтверждения транзакции; если передатьfalseЕсли установлено значение false, то будет отключен режим автоматического выполнения транзакций.
mysqli_autocommit($con, $mode);
Номер | Параметры и описание |
---|---|
1 | con (обязателен) Это объект подключения к серверу MySQL. |
2 | mode (обязателен) Это булево значение, которое указывает, следует ли включить режим автоматического выполнения транзакций. |
Функция PHP mysqli_autocommit() возвращает булево значение, в случае успехаtrue, в случае неудачиfalse.
Этот метод не работает в запросах, не поддерживающих обработку транзакций, таких как MyISAM или ISAM.
Эта функция была最初 введена в PHP версии 5 и может использоваться во всех более высоких версиях.
Предположим, что мы создали таблицу my_team в базе данных mydb, как показано ниже-
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) );
Ниже приведен пример демонстрацииmysqli_autocommit()Функция использования (в стиле процедурного программирования)-
<?php //Establish connection $con = mysqli_connect("localhost", "root", "password", "mydb"); //Set automatic commit to false mysqli_autocommit($con, False); //Insert record into 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')"); //Verify the content of the table $result = mysqli_query($con, "SELECT * FROM my_team"); print_r($result); //Close connection mysqli_close($con); ?>
Output result
mysqli_result Object ( [current_field] => 0 [field_count] => 5 [lengths] => [num_rows] => 4 [type] => 0 )
Since we have turned off the automatic commit option in the previous example, the record addition will not be saved in the database, and if you verify the content of the table in MySQL, the table will be empty as follows;
mysql> select * from my_team; Empty set (0.00 sec)
To save changes in the database, you need to use the mysqli_commit() function to commit changes as
mysqli_commit($con);
If you verify the content of the table my_team, you can see the inserted records as follows-
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)
The syntax for this method in object-oriented style is $con->autocommit()Below is an example of this function in an object-oriented style;
//Establish connection $con = new mysqli("localhost", "root", "password", "mydb"); //Set automatic commit to true $con->autocommit(FALSE); //Insert record into 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')"); //Verify the content of the table $result = $con->query("SELECT * FROM my_team"); print_r($result); //Save result $con->commit(); //Close connection $con -> close(); ?>
Output result
mysqli_result Object ( [current_field] => 0 [field_count] => 5 [lengths] => [num_rows] => 4 [type] => 0 )
mysqli_autocommit() function can also be used as commit() when called, it will wait for the query results to be saved to the database:
//Establish connection $con = mysqli_connect("localhost", "root", "password", "mydb"); //Create table mysqli_query($con, "Create table players (First_Name VARCHAR(255), Last_Name VARCHAR(255), Country VARCHAR(255))"); //Set automatic commit to false mysqli_autocommit($con, False); //Insert record into my_team table mysqli_query($con, "insert into players values('Shikhar', 'Dhawan', 'India')"); mysqli_query($con, "insert into players values('Jonathan', 'Trott', 'SouthAfrica')"); mysqli_autocommit($con, TRUE); //Close connection mysqli_close($con); ?>
после выполнения программы, если проверить players содержание таблицы, то можно наблюдать добавленную запись, как показано ниже -
mysql> select * from players; +------------+-----------+-------------+ | First_Name | Last_Name | Country | +------------+-----------+-------------+ | Shikhar | Dhawan | India | | Jonathan | Trott | SouthAfrica | +------------+-----------+-------------+ 2 строк в наборе (0.00 сек)
<?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; +---------+------+ | Name | Age | +---------+------+ | Sharukh | 25 | | Kalyan | 30 | +---------+------+ 2 строк в наборе (0.00 сек)