commit
Функция mysqli_commit() в PHP используется для подтверждения транзакции в MySQL. Обзор функции и примеры использования.
В этой статье мы рассмотрим функцию mysqli_commit() в PHP, которая используется для подтверждения транзакции в MySQL. Мы дадим обзор функции, опишем принцип её работы и приведём примеры использования.
Введение в функцию mysqli_commit()
Функция mysqli_commit() — это встроенная процедурная функция PHP, которая подтверждает текущую транзакцию для соединения с базой данных MySQL. Она полезна, когда нужно окончательно сохранить изменения, внесённые в таблицу базы данных, например обновления или удаления, в рамках блока транзакции. Обратите внимание, что объектно-ориентированным аналогом является метод $mysqli->commit().
Как использовать функцию mysqli_commit()
Использование mysqli_commit() требует действующего соединения MySQLi и запущенной транзакции (как правило, путём отключения автофиксации). Ниже приведён базовый процедурный пример:
Базовое использование mysqli_commit()
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
if (!$mysqli) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
exit();
}
// Disable autocommit to start a transaction
mysqli_autocommit($mysqli, false);
// execute queries using the connection
// Commit the transaction
$result = mysqli_commit($mysqli);
if ($result) {
echo "Transaction committed successfully.";
} else {
echo "Transaction commit failed: " . mysqli_error($mysqli);
}
mysqli_close($mysqli);
?>Параметры и возвращаемое значение:
$mysqli: ресурс соединения MySQLi, возвращаемый функциейmysqli_connect().$transaction(необязательный): string, задающий имя транзакции (поддерживается в MySQL 8.0+).- Возвращает:
trueв случае успеха,falseв случае ошибки.
Расширенное использование
Функция mysqli_commit() поддерживает имена транзакций и часто используется совместно с обработкой ошибок для обеспечения целостности данных. Если подтверждение завершается неудачей, как правило, следует откатить транзакцию. Ниже приведён пример с правильной обработкой ошибок и использованием необязательного параметра транзакции:
Расширенное использование mysqli_commit()
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
if (!$mysqli) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
exit();
}
mysqli_autocommit($mysqli, false);
// execute queries using the connection
// Commit with an optional transaction name
$result = mysqli_commit($mysqli, "my_transaction");
if (!$result) {
echo "Commit failed: " . mysqli_error($mysqli);
// Roll back changes if commit fails
mysqli_rollback($mysqli);
}
mysqli_close($mysqli);
?>В этом примере мы отключаем автофиксацию, выполняем запросы и пытаемся подтвердить транзакцию с указанным именем. Если mysqli_commit() возвращает false, мы перехватываем ошибку и вызываем mysqli_rollback(), чтобы откатить изменения и обеспечить согласованность базы данных.
Заключение
Таким образом, mysqli_commit() — это надёжная процедурная функция для подтверждения транзакций в MySQL в рамках PHP-скриптов. Понимание её параметров, возвращаемых значений и правильной обработки ошибок позволит безопасно управлять изменениями в базе данных. Помните, что объектно-ориентированный аналог $mysqli->commit() работает идентично, но вызывается как метод объекта MySQLi.