PDO Class

  PDO Class

 المقدمة: 

في عالم تطوير الويب، تعد إدارة قواعد البيانات جزءاً أساسياً من بناء تطبيقات قوية وآمنة. تعتبر فئة 

(PDO (PHP Data Objects في PHP أداة مهمة تسهم في تسهيل هذا الأمر بشكل كبير. فهي توفر واجهة موحدة وآمنة للتعامل مع قواعد البيانات، مما يجعل الانتقال بين أنواع مختلفة من قواعد البيانات أمراً سهلاً وسلساً. بالإضافة إلى ذلك، تساعد PDO في حماية تطبيقاتك من هجمات حقن SQL (SQL Injection)، مما يعزز أمان تطبيقاتك بشكل كبير.

والهدف من هذه المقالة شرح Class PDO في PHP وأهميته حيث  يوفر واجهة موحدة وآمنة للتعامل مع قواعد البيانات، مما يسهل الانتقال بين أنواع قواعد البيانات المختلفة ويحمي من هجمات حقن SQL.

What is PDO in PHP?

PDO في PHP يوفر طبقة تجريد للوصول إلى البيانات، اي انه بإمكانك إصدار استعلامات واسترجاع بيانات باستخدام نفس الدوال بغض النظر عن قاعدة البيانات اللي تستخدمها. PDO ليس تجريد لقاعدة البيانات؛ ولا يعيد كتابة SQL أو يقلد ميزات غير متاحة.


  1. تثبيت PDO:

بشكل افتراضي، يكون محرك PDO ومحرك PDO SQLite متاحين. يجب عليك تمكين محرك PDO لقاعدة البيانات التي تستخدمها. عندما تثبت PDO كموديل مشترك، يجب تعديل ملف php.ini لضمان تحميل ملحق PDO تلقائيًا عند تشغيل PHP. بالإضافة إلى ذلك، يجب إضافة محركات قواعد البيانات الخاصة بك بعد ملحق PDO في ملف php.ini. هذا يضمن تحميل قسم PDO قبل تحميل الملحقات الخاصة بقاعدة البيانات. يمكنك تجاوز هذه الخطوة إذا كنت قد بنيت PDO والملحقات الخاصة بقاعدة البيانات بشكل ثابت.

يجب أن تقوم بإزالة تعليق هذا السطر:

extension=pdo.so

ثم تقوم باضافة محركات قواعد البيانات تحته، محركات قواعد البيانات المتاحة:

  • extension=php_pdo.dll

  • extension=php_pdo_firebird.dll

  • extension=php_pdo_informix.dll

  • extension=php_pdo_mssql.dll

  • extension=php_pdo_mysql.dll

  • extension=php_pdo_oci.dll

  • extension=php_pdo_oci8.dll

  • extension=php_pdo_odbc.dll

  • extension=php_pdo_pgsql.dll

  • extension=php_pdo_sqlite.dll 

يمكنك إيجاد الملف في المسار:
C:\laragon\bin\php\php-x إذا كنت تستخدم laragon server حيث ان x هو رقم النسخة، إذا كنت تستخدم سيرفر اخر يمكنك إيجاد في نفس مسار المجلد bin/php/php-version مع اختلاف اسم مجلد السيرفر.


  1. الثوابت المعرفة مسبقًا:

PDO::PARAM_BOOL (int)

يمثل هذا النوع من البيانات البوليانية (boolean).

PDO::PARAM_NULL (int)

يمثل هذا النوع من البيانات SQL NULL.

PDO::PARAM_INT (int)

يمثل هذا النوع من البيانات SQL INTEGER.

PDO::PARAM_STR (int)


يمثل هذا النوع من البيانات SQL CHAR أو VARCHAR أو أي نوع آخر من السلاسل النصية (string).


PDO::PARAM_STR_NATL (int)


يستخدم للإشارة إلى سلسلة نصية تستخدم مجموعة الأحرف الوطنية. متاح منذ PHP 7.2.0.


  1.  قواعد البيانات المدعومة:


Database Name

Driver Name

Cubrid

PDO_CUBRID

FreeTDS / Microsoft SQL Server / Sybase

PDO_DBLIB

Firebird/Interbase 6

PDO_FIREBIRD

IBM DB2

PDO_IBM

IBM Informix Dynamic Server

PDO_INFORMIX

MySQL 3.x/4.x/5.x

PDO_MYSQL

Oracle Call Interface

PDO_OCI

ODBC v3 (IBM DB2, unixODBC and win32 ODBC)

PDO_ODBC

PostgreSQL

PDO_PGSQL

SQLite 3 and SQLite 2

PDO_SQLITE

Microsoft SQL Server / SQL Azure

PDO_SQLSRV

4D

PDO_4D


  واجهة فئة PDO في PHP:


فئة (PDO (PHP Data Objects توفر مجموعة من الطرق للتعامل مع قواعد البيانات بشكل مرن وموحد. فيما يلي قائمة بالطرق الرئيسية التي توفرها فئة PDO:

  1.  البناء:


ينشئ مثيلًا جديدًا من فئة PDO للاتصال بقاعدة البيانات المحددة.

8.3.24

  1. بدء المعاملة:

تبدأ معاملة جديدة.


  1.  حفظ الحالة:

تلتزم بالتغييرات التي تمت في المعاملة الحالية.


  1.  رمز الخطأ:

يحصل على رمز الخطأ من العملية الأخيرة.


  1.  معلومات الخطأ

يحصل على معلومات مفصلة عن الخطأ الأخير.


  1.  تنفيذ استعلام:

ينفذ استعلام SQL ويعيد عدد الصفوف المتأثرة.



  1.  الحصول على قيمة خاصية

يحصل على قيمة سمة من سمات PDO.


  1.  الحصول على السواقات:

يحصل على قائمة بال Driver PDO المتاحة. تقوم بإرجاع قائمة (drivers) المتاحة التي يمكن استخدامها مع PDO. هذه السواقات هي برامج تشغيل PDO التي تدعم أنواعًا مختلفة من قواعد البيانات.


  1.  التحقق من وجود معاملة:

يتحقق مما إذا كانت هناك معاملة جارية.


  1.  معرفة آخر ما تم إدراجه:

يحصل على معرف الصف الأخير الذي تم إدراجه.


  1.  تحضير استعلام:

يحضر استعلام SQL للتنفيذ.


  1.  تنفيذ استعلام وإرجاع بيانات:

ينفذ استعلام SQL ويعيد كائن PDOStatement.


  1.  إقتباس سلسلة نصية (أخذ جزء):

يقتبس سلسلة نصية بأمان لاستخدامها في استعلام SQL. تساعد هذه الطريقة في منع هجمات حقن SQL (SQL Injection) عن طريق التجاهل من المحارف الخاصة (Special Char) في السلسلة.


  1.  التراجع عن معاملة:

يتراجع عن المعاملة الحالية.


  1.  تعيين سمة:

يضبط سمة من سمات PDO.

مثال:


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


 فئة PDO في PHP:

تُستخدم فئة PDO في PHP لتمثيل العلاقة بين PHP وقاعدة البيانات. هناك ثلاث فئات PDO في PHP:

  1. PDO - تمثل العلاقة بين PHP وقاعدة البيانات.

  2. PDOStatement - تمثل عبارة معدة (Prepared Statement) وتعرض النتائج بعد تنفيذ العبارة.

  3. PDOException - تمثل أخطاء PDO في PHP.

تفاصيل طرق فئة PDO

PDO::__construct

تُستخدم هذه الطريقة لإنشاء كائن من فئة PDO يمثل علاقة مع قاعدة البيانات.

  • DSN - اسم مصدر البيانات، وهو سلسلة من الأحرف تحتوي على المعلومات اللازمة للاتصال بقاعدة البيانات. تتكون السلسلة من اسم البادئة (على سبيل المثال، pgsql لقاعدة بيانات PostgreSQL)، يليه نقطتان واسم الخادم.

  • Username - سلسلة تحتوي على اسم المستخدم. بالنسبة لبعض برامج تشغيل PDO، يمكن أن تكون هذه المعلمة اختيارية.

  • Password - كلمة مرور المستخدم المخزنة في هذه السلسلة. بالنسبة لبعض برامج تشغيل PDO، يمكن أن تكون هذه المعلمة اختيارية.

  • Driver options - معلمة اختيارية تتضمن قائمة من الخيارات المرتبطة بالسائق بصيغة مفتاح=>قيمة.

عند إتمام العملية، تُرجع هذه الطريقة كائن PDO في PHP. إذا حدث خطأ، يتم إرجاع كائن PDOException.

 تفاصيل فئة PDOStatement:

تمثل فئة PDOStatement عبارة معدة (Prepared Statement) ونتائجها بعد تنفيذها. تُطبق PDOStatement واجهة Traversable.

الخصائص:

  • readonly string $queryString - سلسلة قراءة فقط تحتوي على الاستعلام الذي تم تحضيره.

طرق فئة PDOStatement:

  • bindColumn: لربط عمود في مجموعة نتائج إلى متغير.

  • bindParam: لربط متغير بمعامل في العبارة المعدة.

  • bindValue: لربط قيمة مباشرة بمعامل في العبارة المعدة.

  • closeCursor: لإغلاق المؤشر الحالي وإتاحة إعادة استخدام الكائن.

  • columnCount: للحصول على عدد الأعمدة في مجموعة النتائج.

  • debugDumpParams: لعرض معلومات حول المعلمات المستخدمة في العبارة المعدة.

  • errorCode: للحصول على رمز الخطأ من آخر عملية.

  • errorInfo: للحصول على معلومات حول الخطأ من آخر عملية.

  • execute: لتنفيذ العبارة المعدة.

  • fetch: لجلب صف من مجموعة النتائج.

  • fetchAll: لجلب جميع الصفوف من مجموعة النتائج.

  • fetchColumn: لجلب قيمة عمود محدد من الصف الحالي.

  • fetchObject: لجلب صف ككائن من فئة محددة.

  • getAttribute: للحصول على قيمة سمة محددة.

  • getColumnMeta: للحصول على معلومات حول عمود محدد.

  • nextRowset: للانتقال إلى مجموعة النتائج التالية.

  • rowCount: للحصول على عدد الصفوف التي تم معالجتها.

  • setAttribute: لتعيين قيمة سمة محددة.

  • setFetchMode: لتعيين وضع جلب البيانات.

مثال:

فيما يلي مثال يوضح كيفية ربط متغير بعمود في مجموعة النتائج:     

هذا المثال يوضح كيفية إعداد اتصال بقاعدة بيانات MySQL، تنفيذ استعلام، ربط عمود emailid بمتغير $email، ثم جلب وعرض القيم من هذا العمود.




 المراجع


اسم المرجع

الرابط

PHP: PDO manual

https://www.php.net/manual/en/book.pdo.php

simplilearn

https://www.simplilearn.com/tutorials/php-tutorial/pdo-in-php



PDO Class   PDO Class بواسطة Remocolla Academy في يناير 13, 2026 تقييم: 5

ليست هناك تعليقات:

يتم التشغيل بواسطة Blogger.