تمت إضافة ملحق POD في PHP5. يوفر هذا الامتداد فئة PDO المضمنة في PHP للوصول إلى قاعدة البيانات. تستخدم قواعد البيانات المختلفة نفس اسم الطريقة لحل مشكلة اتصالات قاعدة البيانات غير المتسقة.
هدف PDO هو
توفير واجهة برمجة تطبيقات خفيفة الوزن وواضحة ومريحة
توحيد الميزات المشتركة بين مكتبات RDBMS المختلفة دون استبعاد المزيد من الميزات المتقدمة.
يوفر درجة اختيارية أكبر من التجريد/التوافق عبر نصوص PHP النصية.
مميزات شركة تنمية نفط عمان:
الأداء. لقد تعلمت شركة تنمية نفط عُمان منذ البداية عن النجاحات والإخفاقات في توسيع نطاق قواعد البيانات الحالية. نظرًا لأن كود PDO جديد تمامًا، لدينا الفرصة لإعادة تصميم الأداء من الألف إلى الياء للاستفادة من أحدث ميزات PHP 5.
قدرة. تم تصميم PDO لتوفير وظائف قاعدة البيانات المشتركة كأساس مع توفير سهولة الوصول إلى الميزات الفريدة لنظام RDBMS.
بسيط. تم تصميم PDO لتسهيل العمل مع قواعد البيانات بالنسبة لك. لا تشق واجهة برمجة التطبيقات طريقها إلى التعليمات البرمجية الخاصة بك وتوضح ما يفعله كل استدعاء دالة.
قابلة للتوسعة في وقت التشغيل. يعد امتداد PDO معياريًا، مما يتيح لك تحميل برامج التشغيل للواجهة الخلفية لقاعدة البيانات الخاصة بك في وقت التشغيل دون الحاجة إلى إعادة ترجمة أو إعادة تثبيت برنامج PHP بالكامل. على سبيل المثال، سيحل امتداد PDO_OCI محل امتداد PDO لتنفيذ واجهة برمجة تطبيقات قاعدة بيانات Oracle. هناك أيضًا برامج تشغيل لـ MySQL، وPostgreSQL، وODBC، وFirebird، وهناك المزيد قيد التطوير. [فاصل]
قم بتثبيت شركة تنمية نفط عمان
ما لدي هنا هو امتداد PDO للتطوير ضمن WINDOWS. إذا كنت تريد تثبيته وتكوينه ضمن Linux، فيرجى البحث في مكان آخر.
متطلبات الإصدار: تم تضمين php5.1 والإصدارات الأحدث بالفعل في الحزمة؛ ويجب تنزيل php5.0.x من pecl.php.net ووضعه في مكتبة الملحقات الخاصة بك، وهو المجلد الإضافي للمجلد الذي يوجد به PHP. ;يقول الدليل أن الإصدارات السابقة للإصدار 5.0 لا يمكنها تشغيل ملحقات PDO. إعدادات:
قم بتعديل ملف التكوين php.ini الخاص بك بحيث يدعم pdo (إذا كنت لا تفهم php.ini، فاكتشفه أولاً. تحتاج إلى تعديل php.ini الذي يتم عرضه عند استدعاء وظيفة phpinfo() الخاصة بك.) تغيير الامتداد= php_pdo قم بإزالة الفاصلة المنقوطة الموجودة أمام ملف .dll. الفاصلة المنقوطة هي رمز التعليق على ملف تكوين php. هذا الامتداد ضروري. هناك المزيد
;الامتداد=php_pdo.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_informix.dll
;الامتداد=php_pdo_mssql.dll
;الامتداد=php_pdo_mysql.dll
;الامتداد=php_pdo_oci.dll
;الامتداد=php_pdo_oci8.dll
;الامتداد=php_pdo_odbc.dll
;الامتداد=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
قاعدة البيانات المقابلة لكل ملحق هي:
اسم برنامج التشغيل قواعد البيانات المدعومة
PDO_DBLIB FreeTDS/Microsoft SQL Server/Sybase
PDO_FIREBIRD فايربيرد/إنترباس 6
PDO_INFORMIX خادم IBM Informix الديناميكي
PDO_MYSQL ماي إس كيو إل 3.x/4.x
واجهة اتصال أوراكل PDO_OCI
PDO_ODBC ODBC v3 (IBM DB2 وunixODBC وwin32 ODBC)
PDO_PGSQL بوستجرسكل
PDO_SQLITE SQLite 3 وSQLite 2
ما هي قاعدة البيانات التي تريد استخدامها، ما عليك سوى إزالة رمز التعليق ";" قبل الامتداد المقابل.
باستخدام شركة تنمية نفط عمان
أفترض هنا أنك قمت بتثبيت mysql. إذا لم يكن الأمر كذلك، فيرجى العثور على طريقة لتثبيته أولاً. Mysql5.0.22، ويمكن للآخرين الذين يستخدمون MySQL 4.0.26 استخدامه أيضًا.
اتصال قاعدة البيانات:
نستخدم المثال التالي لتحليل قاعدة بيانات اتصال PDO،
<?php
$dbms='mysql'; // يستخدم نوع قاعدة البيانات Oracle ODI. بالنسبة للمطورين، الذين يستخدمون قواعد بيانات مختلفة، طالما قمت بتغيير ذلك، فلن تحتاج إلى تذكر الكثير من الوظائف.
$host='localhost'; //اسم مضيف قاعدة البيانات
$dbName='test'; //قاعدة البيانات المستخدمة
$user='root'; // اسم مستخدم اتصال قاعدة البيانات
$pass='';//كلمة المرور المقابلة
$dsn="$dbms:host=$host;dbname=$dbName";
يحاول {
$dbh = new PDO($dsn, $user, $pass); // تهيئة كائن PDO تعني إنشاء كائن اتصال قاعدة البيانات $dbh
صدى "تم الاتصال بنجاح<br/>";
/*يمكنك أيضًا إجراء عملية بحث
foreach ($dbh->query('اختر * من FOO') كصف $) {
print_r($row); // يمكنك استخدام echo($GLOBAL);
}
*/
$dbh = null;
} التقاط (PDOException $e) {
يموت ("خطأ!: " . $e->getMessage() . "<br/>");
}
// افتراضيًا، هذا ليس اتصالاً طويلًا. إذا كنت بحاجة إلى اتصال طويل بقاعدة البيانات، فأنت بحاجة إلى إضافة معلمة في النهاية: array(PDO::ATTR_PERSISTENT => true).
$db = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
?>
استعلام قاعدة البيانات:
لقد قمنا بالفعل بإجراء استعلام أعلاه، ويمكننا أيضًا استخدام الاستعلام التالي:
<?php
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER); // تعيين السمات
$rs = $db->query("Select * FROM foo");
$rs->setFetchMode(PDO::FETCH_ASSOC);
$result_arr = $rs->fetchAll();
print_r($result_arr);
?>
نظرًا لاستخدام طريقة setAttribute() فيما سبق، يتم وضع المعلمتين لإجبار اسم الحقل على الكتابة بأحرف كبيرة. يسرد ما يلي معلمات PDO::setAttribute(): PDO::ATTR_CASE: يفرض أن تكون أسماء الأعمدة بتنسيق، كما هو مفصل أدناه (المعلمة الثانية):
PDO::CASE_LOWER: يفرض أن تكون أسماء الأعمدة بأحرف صغيرة.
PDO::CASE_NATURAL: أسماء الأعمدة في شكلها الأصلي
PDO::CASE_UPPER: فرض كتابة أسماء الأعمدة بأحرف كبيرة.
شركة تنمية نفط عمان::ATTR_ERRMODE: رسالة خطأ.
PDO::ERRMODE_SILENT: لا يعرض معلومات الخطأ، بل رمز الخطأ فقط.
PDO::ERRMODE_WARNING: عرض أخطاء التحذير.
PDO::ERRMODE_EXCEPTION: يطرح استثناءً.
PDO::ATTR_ORACLE_NULLS (صالح ليس فقط لـ ORACLE، ولكن أيضًا لقواعد البيانات الأخرى): ) يحدد القيمة المقابلة في php للقيمة NULL التي ترجعها قاعدة البيانات.
شركة تنمية نفط عمان::NULL_NATURAL: دون تغيير.
PDO::NULL_EMPTY_STRING: يتم تحويل السلسلة الفارغة إلى NULL.
PDO::NULL_TO_STRING: يتم تحويل NULL إلى سلسلة فارغة.
PDO::ATTR_STRINGIFY_FETCHES: تحويل القيم الرقمية إلى سلاسل عند الجلب.
PDO::ATTR_STATEMENT_CLASS: تعيين فئة البيان المقدمة من المستخدم والمشتقة من PDOStatement. لا يمكن استخدامها مع مثيلات PDO المستمرة. يتطلب صفيف (اسم فئة السلسلة، صفيف (منشئ_مختلط)).
PDO::ATTR_AUTOCOMMIT (متوفر في OCI وFirebird وMySQL): ما إذا كان سيتم تنفيذ كل عبارة تلقائيًا أم لا.
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY (متوفر في MySQL): استخدم الاستعلامات المخزنة مؤقتًا.
$rs->setFetchMode(PDO::FETCH_ASSOC); في المثال هو PDOStatement::setFetchMode()، وهو إعلان لنوع الإرجاع.
هناك على النحو التالي:
PDO::FETCH_ASSOC - نموذج المصفوفة النقابية
PDO::FETCH_NUM - نموذج مصفوفة الفهرس الرقمي
PDO::FETCH_BOTH -- كلاهما متاح في شكل مصفوفة، وهو الوضع الافتراضي
PDO::FETCH_OBJ - في شكل كائن، مشابه للكائن mysql_fetch_object() السابق
لمزيد من إعلانات نوع الإرجاع (PDOStatement::method name)، راجع الدليل.
إدراج، تحديث، حذف البيانات،
$db->exec("حذف من `xxxx_menu` حيث mid=43");
تلخيص العمليات المذكورة أعلاه بإيجاز:
عمليات الاستعلام هي بشكل أساسي PDO::query() وPDO::exec() وPDO::prepare().
يُستخدم PDO::query() بشكل أساسي للعمليات التي تُرجع النتائج المسجلة، وخاصة عمليات التحديد.
PDO::exec() مخصص بشكل أساسي للعمليات التي لا تُرجع مجموعة نتائج، مثل الإدراج والتحديث والحذف والعمليات الأخرى. والنتيجة التي تُرجعها هي عدد الأعمدة المتأثرة بالعملية الحالية.
PDO::prepare() هي في الأساس عملية معالجة مسبقة. تحتاج إلى استخدام $rs->execute() لتنفيذ عبارة SQL في المعالجة المسبقة. يمكن لهذه الطريقة ربط المعلمات وهي قوية جدًا ولا يمكن شرحها ببساطة في هذه المقالة الجميع يمكنك الرجوع إلى الأدلة والوثائق الأخرى.
العمليات الرئيسية للحصول على مجموعة النتائج هي: PDOStatement::fetchColumn(), PDOStatement::fetch(), PDOStatement::fetchALL().
PDOStatement::fetchColumn() هو حقل السجل الأول المحدد في نتيجة الجلب. الافتراضي هو الحقل الأول.
يتم استخدام PDOStatement::fetch() للحصول على سجل.
PDOStatement::fetchAll() هو جمع كافة مجموعات السجلات في مجموعة واحدة للحصول على النتائج، يمكنك تعيين نوع مجموعة النتائج المطلوبة من خلال PDOSTatement::setFetchMode.
هناك أيضًا عمليتان محيطتان، إحداهما هي PDO::lastInsertId() وPDOStatement::rowCount(). تقوم PDO::lastInsertId() بإرجاع آخر عملية إدراج، ونوع عمود المفتاح الأساسي هو آخر معرف زيادة تلقائية.
يتم استخدام PDOStatement::rowCount() بشكل أساسي لمجموعة النتائج المتأثرة بعمليات الحذف والإدراج والتحديث الخاصة بـ PDO::query() وPDO::prepare()، وهو غير صالح لأسلوب PDO::exec() وحدد العملية.