شرح صفوف ومحتوى الفقرة
تُدار المعاملات في PDO بهيكل قياسي محكم داخل كتلة try / catch عبر ثلاث دوال في الكائن $pdo:
$pdo->beginTransaction(): توقف الاعتماد التلقائي وتبدأ معاملة جديدة معزولة.$pdo->commit(): توضع في نهاية كتلةtryلاعتماد وحفظ كافة التعديلات بشكل دائم بعد نجاح جميع الخطوات.$pdo->rollBack(): توضع داخل كتلةcatch (Throwable $e)(مع فحصif ($pdo->inTransaction())) لإلغاء جميع التغييرات وإعادة البيانات لحالتها الأصلية فور وقوع أي خطأ.
PHP
<?php
$pdo->beginTransaction();
try {
$stmt = $pdo->prepare("UPDATE wallets SET bal = bal + :amt WHERE id = :id");
$stmt->execute(["amt" => -100, "id" => 1]);
$stmt->execute(["amt" => 100, "id" => 2]);
$pdo->commit();
echo "Transfer committed.";
} catch (Throwable $e) {
if ($pdo->inTransaction()) { $pdo->rollBack(); }
}