PDO یک افزونه سبک و قدرتمند PHP برای اتصال به دیتابیس است. از خصوصیات خوب این افزونه که از نسخه ۵٫۱ روی PHP نصب شده موارد زیر است:[۱]
- پشتیبانی از دیتابیسهای متنوع از جمله مایاسکیوال، MsSQL، اسکیوال لایت و غیره با توابع ثابت. امکان فوق العاده PDO که اجازه میده تا بدون تغییر کدها، دیتابیس رو تغییر بدیم. یعنی مثلاً اگر Applicationای با MySQL ساخته باشیم و تحت شرایطی مجبور به تغییر دیتابیس به MsSQL باشیم، اگر سینتکس کوئریها مشکلی ایجاد نکند، کافیه دیتابیس رو تعویض کنیم و همین. برای سیستمهای بزرگ این یک مزیت خیلی مهم است.
- پشتیبانی از Exceptionهای PHP.Exceptionها امکان کنترل و بدستگیری خطاها رو به برنامهنویس میدهد. PDO امکان کنترل خطاهای دیتابیس رو هم به برنامهنویس میدهد.
- پشتیبانی از Prepared Statement و Stored Procedureها و Multiple Recordset. این سه مورد هیچ کدوم توسط توابع MySQL اجرا نمیشوند. PDO مورد آخر رو در حال حاضر برای MySQL پشتیبانی نمیکند.
- طراحی شده به شکل کلاس. قابلیت مهمی که امکان گسترش و شخصی سازی PDO رو میده مثلاً رفتار توابعش رو تغییر بدیم یا توابع جدیدی بهش اضافه کنیم و در واقع همه امکانات شی گرایی رو باهاش داشته باشیم.
PDO از سه تا کلاس تشکیل شده:
- کلاس اصلی به نام PDO که حاوی توابع اصلی مثل اجرای کوئری و اتصال و غیره است.
- کلاس با نام PDOStatement حاوی توابع برای پردازش و بهرهگیری از کوئریهای اجرا شدهاست مثل fetch.
- کلاس PDOException برای بدستگیری خطاهای رخ داده.
با توجه به اینکه PDO یک کلاس است اتصال به دیتابیس با نمونهگیری این کلاس شروع میشه:
$pdo = new PDO('mysql:dbname=mydatabase;host=localhost', 'db_username', 'db_password');
$assoc_row = $stmt->fetch(PDO::FETCH_ASSOC);
echo "Name: ". $assoc_row['name'];
echo "Age: ". $assoc_row['age'];
$num_row = $stmt->fetch(PDO::PDO::FETCH_NUM);
echo "Name: ". $num_row[1];
echo "Age: ". $num_row[2];
$obj_row = $stmt->fetch(PDO::PDO::FETCH_OBJ);
echo "Name: ". $obj_row->name;
echo "Age: ". $obj_row->age;
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as $row) {
echo "Name: ". $row['name'];
echo "Age: ". $row['age'];
}