Перейти к содержимому

commit

В этой статье мы сосредоточимся на функции mysqli_commit() в PHP, которая используется для фиксации транзакции в MySQL. Мы предоставим вам обзор функции, принцип её работы и примеры использования.

Введение в функцию mysqli_commit()

Функция mysqli_commit() — это встроенная процедурная функция в PHP, которая фиксирует текущую транзакцию для подключения к базе данных MySQL. Это полезно, когда необходимо постоянно сохранить изменения, внесённые в таблицу базы данных (например, обновления или удаления), в рамках блока транзакции. Обратите внимание, что объектно-ориентированным аналогом является метод $mysqli->commit().

Как использовать функцию mysqli_commit()

Для использования mysqli_commit() требуется действительное подключение MySQLi и запущенная транзакция (обычно путём отключения автофиксации). Ниже приведён базовый процедурный пример:

Базовое использование mysqli_commit()

php
<?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 (необязательно): Строка, указывающая имя транзакции (поддерживается в MySQL 8.0+).
  • Возвращает: true при успехе, false при ошибке.

Расширенное использование

Функция mysqli_commit() может работать с именами транзакций и часто используется вместе с обработкой ошибок для обеспечения целостности данных. Если фиксация не удалась, транзакцию обычно следует откатить. Ниже приведён пример, демонстрирующий правильную обработку ошибок и необязательный параметр транзакции:

Расширенное использование mysqli_commit()

php
<?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.

Практика

Что делает функция mysqli_commit в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.