автофиксация
В этой статье мы рассмотрим функцию mysqli_autocommit() в PHP, которая используется для включения или отключения режима автофиксации (autocommit) в транзакциях MySQLi. Мы предоставим обзор функции, объясним принцип её работы и приведём примеры использования.
Введение в функцию mysqli_autocommit()
Функция mysqli_autocommit() является встроенной функцией PHP, предназначенной для переключения режима автофиксации в транзакциях MySQLi. Когда автофиксация включена, каждое SQL-выполнение рассматривается как отдельная транзакция и фиксируется автоматически. При отключении автофиксации вам необходимо явно фиксировать или откатывать транзакции с помощью функций mysqli_commit() и mysqli_rollback().
Как использовать функцию mysqli_autocommit()
Использование функции mysqli_autocommit() очень просто. Вам нужно лишь вызвать функцию и передать ей действительное соединение MySQLi и логическое значение, определяющее состояние автофиксации.
Параметры:
connection(процедурный) /$mysqli(ООП): Объект соединения MySQLi.mode(bool):TRUEдля включения автофиксации,FALSEдля её отключения.
Возвращаемое значение: Возвращает TRUE при успехе, FALSE при ошибке.
Примечание: MySQLi поддерживает как объектно-ориентированный, так и процедурный синтаксис. В примерах ниже используется метод ООП $mysqli->autocommit(). Процедурный аналог: mysqli_autocommit($link, $mode).
Вот пример:
Как использовать функцию mysqli_autocommit()
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli->connect_error;
exit();
}
$mysqli->autocommit(FALSE);
$mysqli->query("INSERT INTO users (name, email) VALUES ('John', '[email protected]')");
$mysqli->query("UPDATE users SET name='John Doe' WHERE id=1");
$mysqli->commit();
$mysqli->autocommit(TRUE);
$mysqli->close();
?>В этом примере мы создаём новый объект MySQLi и отключаем автофиксацию, вызывая функцию autocommit() с аргументом FALSE. Затем мы выполняем два запроса для вставки и обновления данных в таблице users. Транзакция фиксируется путём вызова функции commit() объекта MySQLi.
После этого мы снова включаем автофиксацию, вызывая функцию autocommit() с аргументом TRUE. В завершение мы закрываем соединение MySQLi с помощью метода close() объекта MySQLi.
Расширенное использование
Функция mysqli_autocommit() работает на уровне соединения. При переключении автофиксации с FALSE на TRUE MySQLi автоматически фиксирует все ожидающие транзакции. Такое поведение полезно при последовательном управлении несколькими независимыми транзакциями в рамках одного скрипта. Вот пример:
Расширенное использование PHP autocommit()
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli->connect_error;
exit();
}
// Start and commit the first transaction
$mysqli->autocommit(FALSE);
$mysqli->query("INSERT INTO users (name, email) VALUES ('John', '[email protected]')");
$mysqli->commit();
// Start and commit the second transaction
$mysqli->autocommit(FALSE);
$mysqli->query("UPDATE users SET name='John Doe' WHERE id=1");
$mysqli->commit();
// Re-enable autocommit for subsequent queries
$mysqli->autocommit(TRUE);
$mysqli->close();
?>В этом примере мы отключаем автофиксацию и выполняем запрос INSERT. Затем мы явно фиксируем первую транзакцию. Далее мы снова отключаем автофиксацию для запуска второй транзакции, выполняем запрос UPDATE и фиксируем её. В завершение мы снова включаем автофиксацию и закрываем соединение MySQLi.
Заключение
Подводя итог, функция mysqli_autocommit() является мощным инструментом для включения или отключения режима автофиксации в транзакциях MySQLi в PHP. Понимание принципов работы функции и сценариев её расширенного использования позволит вам эффективно применять эту возможность для создания надёжных и гибких транзакций MySQL в ваших PHP-скриптах. Помните, что при отключенной автофиксации необходимо всегда явно фиксировать или откатывать транзакции, чтобы обеспечить целостность и согласованность данных в вашей базе данных.
Практика
Что делает режим autocommit в PHP?