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

Уровень начальных знаний PHP

Уровень продвинутых знаний PHP

PHP и MySQL

PHP справочник

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

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

Функция mysqli_commit()提交 транзакцию

Определение и использование

MySQL база данных имеет функцию автоматического сохранения транзакций (если она включена), изменения в базе данных сохраняются автоматически; если она отключена, изменения необходимо сохранять явно.

mysqli_commit()Функция сохраняет текущую транзакцию.

Синтаксис

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

Параметр

НомерПараметры и описание
1

con(обязателен)

Это объект подключения к серверу MySQL.

2

flags(опционально)

Это может быть одним из следующих констант:

  • MYSQLI_TRANS_COR_AND_CHAIN

  • MYSQLI_TRANS_COR_AND_NO_CHAIN

  • MYSQLI_TRANS_COR_RELEASE

  • MYSQLI_TRANS_COR_NO_RELEASE

3

name(опционально)

Это имя значения, при задании которого выполняется COMMIT /* name */.

Возвратное значение

Функция mysqli_commit() возвращает булево значение, если операция подтверждения успешна, тоtrue,в противном случаеfalse.

Версия 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_commit()Синтаксис функции (стиль orientated to procedures)-

<?php
   //Установление соединения
   $con = mysqli_connect("localhost", "root", "password", "mydb");
   //Установка автоматического подтверждения в false
   mysqli_autocommit($con, False);
   //Вставка записи в таблицу 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');");
   //Проверка содержимого таблицы
   $result = mysqli_query($con, "SELECT * FROM my_team");
   print_r($result);
   mysqli_commit($con);
   //Закрыть соединение
   mysqli_close($con);
?>

Вывод результатов

mysqli_result Объект
(
    [current_field] => 0
    [field_count] => 5
    [lengths] =>
    [num_rows] => 4
    [type] => 0
)

Если вы проверите содержимое таблицы my_team, то можете наблюдать сохраненные данные, как показано ниже,-

mysql> select * from my_team;
+----+------------+------------+----------------+-------------+
| ID   | First_Name  | Last_Name   | Place_Of_Birth  | Country     |
+----+------------+------------+----------------+-------------+
|    1 | Shikhar     | Dhawan      | Delhi           | India       |
|    2 | Jonathan   | Trott       | CapeTown       | Южная Африка|
|    3 | Kumara      | Sangakkara  | Matale          | Сри-Ланка   |
|    4 | Virat       | Kohli       | Delhi           | India       |
+----+------------+------------+----------------+-------------+
4 строк в наборе (0.00 сек)

Онлайн пример

Методы в стилистике面向 объектов имеют следующий синтаксис:$con->commit();Вот пример этой функции в стилистике面向对象的 программирования;

//Установление соединения
$con = new mysqli("localhost", "root", "password", "mydb");
//установить автоматическую подачу в true
$con->autocommit(FALSE);
//Вставка записи в таблицу 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')");
//Проверка содержимого таблицы
$result = $con->query("SELECT * FROM my_team");
print_r($result);
//Сохранение результатов
$con->commit();
//Закрыть соединение
$con -> close();
?>

Вывод результатов

mysqli_result Объект
(
    [current_field] => 0
    [field_count] => 5
    [lengths] =>
    [num_rows] => 4
    [type] => 0
)

Онлайн пример

Давайте рассмотрим другой пример. Здесь мы создали таблицу, отключили опцию автоматического подтверждения, вставили запись и сохранили изменения. После сохранения мы вставили другую запись:

//Установление соединения
$con = mysqli_connect("localhost", "root", "password", "mydb");
mysqli_query($con, "Create table players (First_Name VARCHAR(255), Last_Name VARCHAR(255), Country VARCHAR(255));")
//Установка автоматического подтверждения в false
mysqli_autocommit($con, False);
//Вставка записи в таблицу 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;
+------------+-----------+---------+
| First_Name | Last_Name | Country |
+------------+-----------+---------+
| Shikhar    | Dhawan    | India   |
+------------+-----------+---------+
1 строка в наборе (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 справочник