تنظیمات خصوصیات دیتابیس
با استفاده از متد setAttribute میتوانید خصوصیات مورد نظر خود را تنظیم کنید،
این که روش خوبی هست که قبل از کار با دیتابیس خصوصیات رو تنظیم کنید
بعضی از این خصوصیات در لینک PHP: PDO::setAttribute - Manual قابل مشاهده هست
در اینجا به چند خصوصیت مهم می پردازم
PDO::ATTR_ERRMODE
با این خصوصیت تعیین میکنید در هنگام مواجه با ارور در اجرای دستورات ، PDO چگونه برخورد کند
مقادیر این خصوصیت
PDO::ERRMODE_SILENT ( پیش فرض )
با این مقدار تنها اررور در متغیر pdo ذخیره میشود و هیچ عمل دیگری صورت نمیگیرد ( نحوه کار با اررور ذخیره شده رو در اینده توضیح خواهم داد)
PDO::ERRMODE_WARNING
با این مقدار pdo یک هشدار ایجاد میکند که بر حسب کانفیگ شما ، به کاربر نمایش داده میشود یا در فایل ذخیره میشود یا اصلا ذخیره نمیشود.
PDO::ERRMODE_EXCEPTION (پیشنهاد بنده )
با استفاده از این مقدار در صورت برخورد با اررور throw رخ میدهد
دقت کنید برای استفاده از این خصوصیت باید از try catch استفاده کنید
یک مثال برای ست کردن و PDO::ERRMODE_EXCEPTIONکد PHP:
try {
$db = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); //اتصال
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); //ست کردن نحوه نمایش ارور
$db->prepare('DELECT test FROM db'); // یک دستور که باعث ایجاد خطا میشود
}
catch(PDOException $e) {
echo "یک خطا رخ داده است : ".$e->getMessage()ک
}
PDO::ATTR_DEFAULT_FETCH_MODE
با استفاده از این خصوصیت نحوه fetch (خروجی یک ردیف ) را معین میکنید
مقدایر به صورت زیر است
PDO::FETCH_ASSOC
خروجی یک ارایه با اندیس های نام فیلد ها می باشد ( اگر دارای فیلد name باشد مقدار به صورت ['name'] قابل دسترسی هست )
PDO::FETCH_BOUND
یک نوع خاصی از خروجی هست که نیازمند درس های اینده هست، و تا اون موقع بدون توضیح رها میشود
PDO::FETCH_CLASSیک نوع خاصی از خروجی هست که نیازمند درس های اینده هست، و تا اون موقع بدون توضیح رها میشود
PDO::FETCH_NUM
خروجی یک ارایه با اندیس های شماره می باشد ( اگر اولین فیلد name باشد مقدار به صورت [0] قابل دسترسی هست )
PDO::FETCH_BOTH (پیشفرض)
تلفیقی از FETCH_ASSOC و FETCH_NUM
PDO::FETCH_OBJ (پیشنهاد بنده)
خروجی به صورت شی خواهد بود ( اگر در خروجی فیلد name باشد و متغیر $row باشد، مقدار فیلد با $row->name قابل دسترس خواهد بود )
PDO::ATTR_EMULATE_PREPARES
در مورد این در آینده صحبت میکتیم، با این وجود فعلا این مقدار را false قرار بدید(مهم)
نمونه کد برای تغییر خصوصیات
کد PHP:
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_BOTH);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);