شركة تنمية نفط عمان::ERRMODE_SILENT
هذا هو الوضع الافتراضي. ستقوم شركة PDO ببساطة بتعيين رمز الخطأ، والذي يمكن التحقق منه باستخدام طريقتي PDO::errorCode() وPDO::errorInfo() في البيانات وكائنات قاعدة البيانات. إذا حدث الخطأ نتيجة لاستدعاء كائن بيان، فيمكنك استدعاء أسلوب PDOSTatement::errorCode() أو PDOSTatement::errorInfo() لهذا الكائن. إذا كان الخطأ ناتجًا عن استدعاء كائن قاعدة البيانات، فيمكن استدعاء الطريقتين المذكورتين أعلاه على كائن قاعدة البيانات.
شركة تنمية نفط عمان::ERRMODE_WARNING
بالإضافة إلى ضبط رمز الخطأ، ستقوم شركة تنمية نفط عمان أيضًا بإرسال رسالة تحذير E_WARNING تقليدية. يعد هذا الإعداد مفيدًا أثناء تصحيح الأخطاء/الاختبار إذا كنت تريد فقط معرفة الخطأ الذي يحدث دون مقاطعة تدفق التطبيق الخاص بك.
شركة تنمية نفط عمان::ERRMODE_EXCEPTION
بالإضافة إلى تعيين رمز الخطأ، ستقوم شركة PDO أيضًا بطرح فئة استثناء PDOException وتعيين خصائصها لتعكس رمز الخطأ ومعلومات الخطأ. يعد هذا الإعداد مفيدًا جدًا أيضًا أثناء تصحيح الأخطاء، لأنه يعمل بشكل فعال على تكبير النقطة في البرنامج النصي حيث حدث الخطأ، مما يسمح لك بتحديد المناطق التي بها مشكلات محتملة في التعليمات البرمجية بسرعة كبيرة (تذكر: إذا تسبب استثناء في إنهاء البرنامج النصي، يتم إرجاع المعاملة تلقائيًا إلى الوراء).
شيء آخر مفيد جدًا حول وضع الاستثناء هو أنه يمكنك إنشاء معالجة الأخطاء الخاصة بك بشكل أكثر وضوحًا من تحذيرات نمط PHP التقليدي، ويتطلب تعليمات برمجية أقل من الوضع الصامت والتحقق بشكل صريح من القيمة المرجعة لكل استدعاء قاعدة بيانات متداخلة.
<?php$dsn = 'mysql:dbname=testdb;host=127.0.0.1';$user = 'dbuser';$password = 'dbpass';try { $dbh = new PDO($dsn, $user, $password ); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);} (PDOException $e) { echo "فشل الاتصال: ' $e->getMessage();}?>
ملاحظة: بغض النظر عما إذا كان قد تم تعيين PDO::ATTR_ERRMODE حاليًا أم لا، فسوف يقوم PDO::__construct() دائمًا بطرح PDOException في حالة فشل الاتصال. الاستثناءات التي لم يتم اكتشافها قاتلة.
<?php$dsn = 'mysql:dbname=test;host=127.0.0.1';$user = 'googleguy';$password = 'googleguy';/* لا يزال استخدام المحاولة/التقاط حول المنشئ يعمل حتى إذا تم تعيين ERRMODE تحذير لأن PDO::__construct ستطرح دائمًا PDOException في حالة فشل الاتصال. */try { $dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));} Catch (PDOException $e) { echo 'فشل الاتصال: ' $ e->getMessage();exit;}// سيؤدي هذا إلى قيام شركة تنمية نفط عمان بإلقاء تحذير E_WARNING خطأ في المستوى، وليس استثناء (في حالة عدم وجود جدول البيانات) $dbh->query("SELECT errorcolumn FROM errortable");?>
سوف يخرج الروتين أعلاه:
تحذير: PDO::query(): SQLSTATE[42S02]: لم يتم العثور على الجدول الأساسي أو العرض: 1146 الجدول "test.wrongtable" غير موجود في/tmp/pdo_test.php على السطر 18 أضف ملاحظة أضف ملاحظة