W3docs

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.

Практика

Практика
Что делает функция mysqli_commit в PHP?
Что делает функция mysqli_commit в PHP?
Was this page helpful?