تابع setAttribute()

پرسیده شده
فعالیت 1061 روز پیش
دیده شده 1464 بار
1

سلام وقت بخیر

در مورد این خط کد سوال دارم:

(db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION$

این کد نوع خطا را set می کند که مثلا از نوع warning  باشد یا Exception  یا ... درسته؟

در این کد و ساختار ما که نوع خطا از نوع Exception بود پس این کد چه لزومی داشت؟

اگر ممکنه در مورد این تابع بیشتر توضیح بدید که چه پارامترهایی می گیرد و کجا کاربرد دارد.

با تشکر

فایل پیوست

هاجر اسدالله پور
هاجر اسدالله پور

3 فروردین 99

5
حذف شده

سلام

توی این کدی که در آموزش گفتیم صرفا هدف این بوده که شما بدونید که Attribute های مختلف توی PDO رو می تونید مقدارشون رو ست کنید.

به نظر میرسه مقدار پیشفرض این attribute روی همون exception باشه.

شما خیلی کلی در نظر بگیرید که setAttribute رو برای تغیر attribute های مختلف در PDO می تونید استفاده کنید

فایل پیوست

لقمان آوند

توسط

لقمان آوند

4 فروردین 99

1
حذف شده

از PDO::setAttribute برای کنترل خطاها در PDO استفاده میکنیم. که به شکل زیر استفاده میکنیم:

public PDO::setAttribute ( int $attribute , array|int $value ) : bool

 

با استفاده از این کد میتونید وضعیت نمایش خطاها رو مشخص کنید. 

 

معمولا خطاها زمانیکه از بلاک try/catch استفاده میشه، در بخش catch نمایش داده میشه. حالا ممکنه مثلا یک هشدار داشته باشیم یا یک خطای استثناء که PDO در قسمت try اجرا بشه و به قسمت catch منتقل نشه. اما در عین حال واسه سایت ما خطرناک باشه!

 

در حالت کلی ۳ نوع مود خطا داریم که با استفاده از عبارت ATTR_ERRMODE تنظیم میشه:

 

$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT );
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

 

PDO::ERRMODE_SILENT

به عنوان خطای پیش‌فرض می‌باشد. اگر شما تنظیمات را روی این نوع خطا قرار دهید تنها خطاهایی که در افزونه‌های MYSQL یا MYSQLI می‌باشد را در اختیار دارید. 

 

دو راه دیگر برای برنامه‌نویسی بدون تکرار یا DRY Programming وجود دارد که بهتر است از آنها استفاده شود:

 

PDO::ERRMODE_WARNING

این مود هشدارها و اخطارهای PHP را نمایش می‌دهد و برنامه پس از دریافت هشدار به اجرا شدن خود ادامه می‌دهد. این حالت برای خطایابی مورد استفاده قرار می‌گیرد.

 

PDO::ERRMODE_EXCEPTION

این مود در بیشتر مواقع مورد استفاده قرار می‌گیرد زیرا با اعمال آن یک exception یا استثناء مشخص می‌دهد که می‌توان از طریق آن خطاها را بررسی کرده و داده‌هایی که برای تخریب سایت شما ممکن است خطرناک باشند را پنهان می‌کند.

فایل پیوست

سیدرضا بازیار

توسط

سیدرضا بازیار

12 خرداد 00