Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про PHP: transaction, pdo, mysql, rollback, commit

Как выполнять транзакции в 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();
}

Используйте транзакции для критически важных операций, где важно обеспечить целостность данных, например, при выполнении финансовых операций.

Уровень

  • Рейтинг:

    3

  • Сложность:

    6

Навыки

  • PHP

    PHP

Ключевые слова

#transaction

#pdo

#mysql

#rollback

#commit

Подпишись на PHP Developer в телеграм