English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP базовый курс

PHP продвинутый курс

PHP & MySQL

PHP справочник

Пример использования и примеры PHP mysqli_autocommit() функции

PHP MySQLi справочник

Функция 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

Эта функция была最初 введена в 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 сек)

PHP MySQLi справочник