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'];
}

منابع ویرایش

  1. «نسخه آرشیو شده». بایگانی‌شده از اصلی در ۶ سپتامبر ۲۰۱۳. دریافت‌شده در ۱۱ سپتامبر ۲۰۱۳.