Как выполнять транзакции в PHP с MySQL?
Вопрос проверяет понимание механизма транзакций и их использования для обеспечения согласованности данных.
Короткий ответ
Транзакции позволяют выполнять несколько запросов к базе данных как единое целое. Если один из запросов завершится неудачей, можно откатить изменения. В PHP транзакции реализуются через MySQLi или PDO, с использованием методов beginTransaction, commit и rollBack.
Длинный ответ
Транзакции позволяют группировать операции в одно действие, чтобы изменения применялись только при успешном выполнении всех операций.
Этапы работы:
- Начните транзакцию: beginTransaction (PDO) или START TRANSACTION.
- Выполните запросы.
- Зафиксируйте изменения с помощью commit или откатите их с помощью rollBack при ошибке.
Пример с PDO:
try {
$pdo = new PDO("mysql:host=localhost;dbname=database", "user", "password");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->beginTransaction();
$pdo->exec("INSERT INTO accounts (name, balance) VALUES ('Alice', 1000)");
$pdo->exec("INSERT INTO accounts (name, balance) VALUES ('Bob', 500)");
$pdo->commit(); // Фиксация изменений
echo "Транзакция выполнена успешно.";
} catch (Exception $e) {
$pdo->rollBack(); // Откат изменений
echo "Ошибка: транзакция отменена. " . $e->getMessage();
}Используйте транзакции для критически важных операций, где важно обеспечить целостность данных, например, при выполнении финансовых операций.