آموزش PDO در php

برای اتصال به دیتابیس در PHP روش های متفاوتی وجود داره که میتوان از دستورات mysql , mysqli و PDO نام برد. دستورات mysql در نسخه های آینده کنار گذاشته خواهند شد! ورژن ارتقاع یافته ی mysql با نام mysqli وجود دارد که میتونید ازش استفاده کنید ? اما باید بگم که دستورات PDO برای اتصال و کار با دیتابیس از همه بهتر است, چرا؟ یکی از دلایلش میتونه سرعت بالاتر باشه , دلیل دیگه میتونه در این باشه که PDO میتونه به راحتی به ۱۲ نوع دیتابیس مختلف متصل بشه (مثلا دیتابیس هایی از نوع mysql , sqlserver , oracle , sqlite و …).در ابتدا لازم به ذکره که بگم برای کار با دستورات PDO شما باید کمی با اصول شی گرایی در php اشنا باشید.

من در اینجا دستورات PDO رو در چندین قسمت زیر توضیح میدم :

  1. نحوه اتصال به دیتابیس mysql با PDO
  2. نحوه ی اجرای دستورات مورد نظرمون
  3. ایجاد دستورات اماده (prepare)

قسمت اول : نحوه اتصال به دیتابیس MySQL با استفاده از PDO

برای اتصال به پایگاه داده میتونیم به شیوه ی زیر عمل کنیم , به دستورات زیر دقت کنید:

۱

در دستورات بالا یک شی از نوع PDO (دقت کنید حروف بزرگ است) میسازیم , شی PDO سه تا مقدار ورودی میگیره. مقدار اول هاست و نام دیتابیس ما رو مشخص میکنه , دو مقدار بعدی به ترتیب یوزرنیم و پسوورد مورد نیاز برای اتصال به دیتابیس رو مشخص میکنه.

دوستان عزیز دقت کنید که دستور اتصال به پایگاه داده ی PDO رو درون try catch قرار میدیم تا اگه هنگام اتصال خطا ایجاد شد بتونیم خطا رو مدیریت کنیم.

در اگه خطایی رخ بده اون خطا به قسمت catch ارسال میشه و ما اون خطا رو درون یه متغیر از نوع PDOException (استثنا از نوع PDO) دریافت میکنیم , متن خطا رو میشه با متد getMessage دریافت کرد ? به همین راحتی. البته متد errorInfo هم وجود داره که اطلاعات ارور رو به صورت ارایه ای به ما میده.

خب الان با موفقیت به دیتابیس متصل شدیم ? حالا میریم ببینیم چجوری میتونیم دستوراتمون رو اجرا کنیم.

قسمت دوم : نحوه ی اجرای دستورات SQL مورد نظر در PDO

برای اجرای دستورات مورد نظرمون توسط PDO میشه روش های مختلفی رو در نظر گرفت. این روش ها از متدهای متفاوتی استفاده میکنند که به صورت زیر هستند:

  • متد exec : این متد یک مقدار ورودی از نوع دستورات SQL میگیره و اجرا میکنه , بعد از اجرا کردن دستور , تعداد رکورد هایی که مورد تاثیر قرار گرفته اند را به شما میدهد , دقت کنید که وقتی از این دستور استفاده میکنید نمیتونید داده هایی را از پایگاه داده دریافت کنید. یعنی اگه سعی کنید با دستور select داده هایی را انتخاب کنید عمل انتخاب کردن انجام می شود اما نمیشه با دستوراتی که در PDO وجود داره این داده ها رو دریافت کرد. پس این دستور فقط برای اجرای دستوراتی که با اون نمیخوایم داده هایی رو از دیتابیس دریافت کنیم خوبه.
  • متد query : این متد یه مقدار ورودی از نوع SQL میگیره و اجرا میکنه , دقت کنید که این تابع هر دستوری که بهش بدید رو اجرا میکنه و مشکلات امنیتی دستورات رو باید خودتون حل کنید (مثلا مشکلات مربوط به injection)
  • متد execute : این دستور همانند دستور query هست اما با این تفاوت که این دستور این %D