البرمجة

تحويل اتصال قاعدة البيانات من MySQL المهملة إلى PDO في PHP 7

في هذا السياق، يظهر لديك كود PHP يستخدم وظيفة mysql_connect التي أصبحت قديمة وغير مدعومة في PHP 7. لحل هذه المشكلة، ينبغي عليك استخدام تقنية PDO (PHP Data Objects) للاتصال بقاعدة البيانات بدلاً من استخدام الميزة القديمة.

أولاً وقبل كل شيء، يجب عليك إنشاء اتصال PDO بقاعدة البيانات. يمكنك استخدام الكود التالي لتحقيق ذلك:

php
try { $pdo = new PDO("mysql:host=localhost;dbname=tm-mobile", 'root', ''); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { die("Connection failed: " . $e->getMessage()); } ?>

بعد إنشاء الاتصال بنجاح، يمكنك تحويل باقي الكود لاستخدام PDO. إليك كيف يمكن تحسين الجزء المتعلق بالاتصال بقاعدة البيانات:

php
try { $pdo = new PDO("mysql:host=localhost;dbname=tm-mobile", 'root', ''); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); if (!empty($_POST['owner_name']) && !empty($_POST['owner_email'])) { $owner_id = $_POST['owner_id']; $owner_name = $_POST['owner_name']; $owner_email = $_POST['owner_email']; $owner_password = $_POST['owner_password']; $market_name = $_POST['market_name']; $sql = "UPDATE owner_table SET owner_id = ?, owner_name = ?, owner_email = ?, owner_password = ?, market_name = ?"; $stmt = $pdo->prepare($sql); $stmt->execute([$owner_id, $owner_name, $owner_email, $owner_password, $market_name]); // يمكنك إضافة المزيد من التحكم أو الرد هنا } } catch (PDOException $e) { die("Error: " . $e->getMessage()); } finally { // قم بإغلاق الاتصال في أي حالة $pdo = null; } ?>

يعتبر هذا الكود أفضل من السابق بسبب استخدام PDO واستخدام استعلام معلمات للحماية من هجمات SQL Injection. كما أنه يضع في اعتباره التعامل مع الأخطاء بشكل أفضل باستخدام try و catch. يرجى مراجعة هذا الكود بعناية وتكييفه وفقًا لاحتياجات التطبيق الخاص بك.

المزيد من المعلومات

بالطبع، دعونا نوسع على المعلومات لضمان فهم أفضل للتغييرات والتحسينات التي تم إجراؤها في الكود.

  1. PDO (PHP Data Objects):
    PDO هي تقنية توفير قاعدة بيانات قياسية في PHP تستخدم للتفاعل مع مصادر البيانات. تعتبر PDO أكثر أمانًا وفعالية من استخدام الدوال القديمة مثل mysql_connect. يتيح لك استخدام المعلمات في الاستعلامات، مما يقلل من فرص حدوث هجمات SQL Injection.

  2. اتصال PDO بقاعدة البيانات:
    في الكود المعدل، تم إنشاء كائن PDO باستخدام معلومات الاتصال بقاعدة البيانات (اسم المضيف، اسم قاعدة البيانات، اسم المستخدم، وكلمة المرور). تمت إضافة try و catch للتعامل مع أي استثناء يمكن أن يحدث أثناء محاولة الاتصال.

  3. استخدام استعلام معلمات:
    تم تحسين الجزء المتعلق بتنفيذ الاستعلام بحيث يتم استخدام استعلام معلمات (?) بدلاً من إدراج القيم مباشرة في الاستعلام. ثم يتم تحضير وتنفيذ الاستعلام باستخدام كائن PDOStatement. هذا يساعد في تجنب مشكلات أمان مثل SQL Injection.

  4. تحسين التعامل مع الأخطاء:
    تمت إضافة بنية try و catch للتعامل بشكل أفضل مع الأخطاء المحتملة خلال تنفيذ الكود. في حال حدوث أي استثناء، سيتم إيقاف التشغيل وطباعة رسالة خطأ مفصلة.

  5. إغلاق الاتصال بشكل صحيح:
    تمت إضافة كتلة finally لضمان إغلاق الاتصال بقاعدة البيانات بغض النظر عن ما إذا كان هناك خطأ أم لا. هذا يساعد في تحسين أداء التطبيق وضمان عدم ترك اتصالات مفتوحة غير ضرورية.

  6. توثيق الأكواد:
    يمكن إضافة توثيق إضافي للأكواد لتسهيل قراءتها وصيانتها في المستقبل. يمكنك إضافة تعليقات لشرح الخطوات المهمة والتفاصيل البسيطة.

هذه التحسينات يمكن أن تجعل الكود أكثر فهمًا وأمانًا، وتحسن أداء التطبيق الخاص بك. يرجى متابعة البناء على هذه التوجيهات وتكييف الكود وفقًا لاحتياجات مشروعك الخاص.

زر الذهاب إلى الأعلى