/
spirzen
/
it-code-examples
Обзор
Документация
Войти
/
spirzen
/
it-code-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/php/php-507-19-003/main.php
42 строки
2 KB
Spirzen
Code migration pack
09 июн 2026, 01:41
09 июн 2026, 01:41
cebc284
Код
Авторство
О чём код?
<?php try { // Подключение с режимом исключения $pdo = new PDO( 'mysql:host=localhost;dbname=test;charset=utf8mb4', 'user', 'password', [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION] ); // Начало транзации $pdo->beginTransaction(); // Подготовка первого запроса $stmt1 = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)"); $stmt1->execute([ ':name' => 'Иван Иванов', ':email' => 'ivan@example.com' ]); // Имитация второго действия (например, обновление баланса) $stmt2 = $pdo->prepare("UPDATE accounts SET balance = balance - 100 WHERE user_id = 1"); $stmt2->execute(); // Если код дошел сюда — все успешно $pdo->commit(); echo "Транзакция успешно завершена."; } catch (PDOException $e) { // При любой ошибке база данных автоматически откатит изменения if ($pdo->inTransaction()) { $pdo->rollBack(); } // Логирование ошибки или вывод пользователю error_log("Ошибка базы данных: " . $e->getMessage()); throw new Exception("Не удалось выполнить операцию", 0, $e); } finally { // Этот блок выполнится всегда, даже если выбросили исключение выше // Здесь можно закрыть соединения или сбросить флаги echo "\nБлок finally выполнен."; }