0Pricing
PHP Academy · درس

المعاملات باستخدام PDO

اجمعوا عدة استعلامات في معاملات ذرّية باستخدام beginTransaction وcommit

المعاملات باستخدام PDO درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PHP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PHP Academy 4 دروس في المجموع.

ما هي المعاملة؟

تجمع المعاملة عدة عبارات SQL في وحدة ذرية واحدة: فإما أن تنجح جميعها (commit) أو يجري التراجع عنها جميعًا.

خصائص ACID

تضمن المعاملات خصائص ACID: الذرية، والاتساق، والعزل، والاستمرارية.

beginTransaction()

ابدأ معاملة باستخدام $pdo->beginTransaction(). يُعطَّل التنفيذ التلقائي حتى تستدعي commit() أو rollBack().

commit()

يحفظ نهائيًا جميع التغييرات التي أُجريت منذ beginTransaction().

rollBack()

يلغي جميع التغييرات التي أُجريت منذ beginTransaction()، ويعيد قاعدة البيانات إلى حالتها قبل المعاملة.

نمط المعاملة

ضع المعاملات دائمًا داخل try/catch:

<?php
try {
    $pdo->beginTransaction();

    $pdo->prepare("UPDATE accounts SET balance = balance - ? WHERE id = ?")
        ->execute([100, $senderId]);

    $pdo->prepare("UPDATE accounts SET balance = balance + ? WHERE id = ?")
        ->execute([100, $receiverId]);

    $pdo->commit();
} catch (PDOException $e) {
    $pdo->rollBack();
    throw $e;
}

نقاط الحفظ

لا يدعم PDO المعاملات المتداخلة أصليًا. استخدم أوامر SQL SAVEPOINT لإجراء عمليات تراجع جزئية داخل المعاملة.

inTransaction()

تحقق مما إذا كانت هناك معاملة نشطة باستخدام $pdo->inTransaction(). وتُرجع true أو false.

وضع التنفيذ التلقائي

يكون PDO في وضع التنفيذ التلقائي افتراضيًا، إذ تُثبَّت كل عبارة فورًا. ويعطّل beginTransaction() التنفيذ التلقائي.

مستويات العزل

يدعم MySQL المستويات التالية: READ UNCOMMITTED وREAD COMMITTED وREPEATABLE READ (الافتراضي) وSERIALIZABLE. اضبطها باستخدام $pdo->exec("SET TRANSACTION ISOLATION LEVEL READ COMMITTED").

متى تستخدم المعاملات؟

استخدمها في: التحويلات المصرفية، وإنشاء الطلبات مع خصم المخزون، وأي عملية كتابة على عدة جداول لا يُقبل فيها الاكتمال الجزئي.

DDL والمعاملات

في MySQL، تتسبب عبارات DDL مثل CREATE TABLE وALTER TABLE في تثبيت ضمني. ولا يمكنك التراجع عن DDL داخل معاملة.

تحقق سريع

ماذا يفعل rollBack()؟

الأسئلة الشائعة

هل درس «المعاملات باستخدام PDO» مجاني؟

نعم — نص درس «المعاملات باستخدام PDO» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.

ماذا ستتعلم في «المعاملات باستخدام PDO»؟

اجمعوا عدة استعلامات في معاملات ذرّية باستخدام beginTransaction وcommit تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟

لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «المعاملات باستخدام PDO»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟

نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الاتصال بـ MySQL باستخدام PDO
  2. العبارات المُعدّة وربط المعاملات
  3. جلب النتائج باستخدام PDO
  4. المعاملات باستخدام PDO
← العودة إلى PHP Academy