0Pricing
PHP Academy · درس

الاتصال بـ MySQL باستخدام PDO

أنشئوا اتصال PDO باستخدام DSN واسم المستخدم وكلمة المرور

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

ما هو PDO؟

PDO (كائنات بيانات PHP) طبقة تجريد للوصول إلى قواعد البيانات. تعمل واجهة برمجية واحدة مع MySQL وPostgreSQL وSQLite وغيرها، وكل ما تحتاج إليه هو تغيير DSN.

DSN

تحدد سلسلة DSN (اسم مصدر البيانات) برنامج التشغيل والمضيف والمنفذ واسم قاعدة البيانات.

<?php
$dsn = "mysql:host=127.0.0.1;port=3306;dbname=myapp;charset=utf8mb4";

إنشاء مثيل PDO

مرّر DSN واسم المستخدم وكلمة المرور إلى مُنشئ PDO. وضع ذلك داخل try/catch لمعالجة أخطاء الاتصال.

<?php
try {
    $pdo = new PDO(
        "mysql:host=127.0.0.1;dbname=myapp;charset=utf8mb4",
        "db_user",
        "db_pass"
    );
} catch (PDOException $e) {
    die("Connection failed: ".$e->getMessage());
}

وضع الأخطاء

اضبط وضع الأخطاء على إطلاق الاستثناءات حتى لا يتم تجاهل الأخطاء بصمت مطلقًا.

<?php
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

وضع الجلب الافتراضي

اضبط نمط الجلب الافتراضي، فالمصفوفات الترابطية هي الأكثر ملاءمة.

<?php
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

إعداد الاتصال الكامل

أفضل ممارسة هي إنشاء PDO مرة واحدة مع جميع السمات، ثم مشاركة المثيل.

<?php
function createPDO(): PDO {
    return new PDO(
        "mysql:host=127.0.0.1;dbname=myapp;charset=utf8mb4",
        "root", "secret",
        [
            PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_EMULATE_PREPARES   => false,
        ]
    );
}

العبارات المُحضّرة المحاكاة

يؤدي ضبط ATTR_EMULATE_PREPARES على false إلى استخدام عبارات مُحضّرة حقيقية على جانب الخادم، وهي أكثر أمانًا وكفاءة.

charset=utf8mb4

حدّد دائمًا charset=utf8mb4 في DSN. فهو يدعم نطاق Unicode الكامل، بما في ذلك الرموز التعبيرية. لا تستخدم الاسم المستعار القديم utf8 مطلقًا.

تشغيل استعلام بسيط

استخدم query() فقط للعبارات التي لا تتضمن أي إدخال من المستخدم.

<?php
$stmt = $pdo->query("SELECT COUNT(*) as total FROM users");
$row  = $stmt->fetch();
echo $row["total"];

exec() للعبارات غير التابعة لـ SELECT

ينفذ exec() عبارة لا تُرجع نتائج، ويُرجع عدد الصفوف المتأثرة.

<?php
$count = $pdo->exec("DELETE FROM sessions WHERE expires_at < NOW()");
echo "Deleted $count expired sessions";

الاتصالات المستمرة

يدعم PDO الاتصالات المستمرة عبر PDO::ATTR_PERSISTENT => true. وفي بيئات PHP-FPM يُفضَّل عادةً استخدام تجمع اتصالات.

الخلاصة

أنشئ PDO باستخدام DSN، واضبط ERRMODE_EXCEPTION وFETCH_ASSOC، وعطّل العبارات المُحضّرة المحاكاة. لا تستدعِ query() مطلقًا مع بيانات يقدّمها المستخدم، بل استخدم العبارات المُحضّرة.

تحقق سريع

أي سمة تجعل PDO يطلق استثناءات عند حدوث الأخطاء؟

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

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

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

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

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

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

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

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

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

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

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

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

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