خلاصه آموزش:

  • PDO(پی دی او ) چیست؟

  • اتصال به پایگاه داده در PHP با استفاده از PDO

  • پردازش کوئری ها در php با استفاده از کلاس PDOstatement

PDO یا به اختصار php data object افزونه ای برای کار با database است که می توانید آن را روی  php نصب کنید. این extention (افزونه) دارای امنیت بسیار بالایی بوده و از شئ گرایی بصورت کامل پشتیبانی می کند و همچنین دارای سرعت بالاتری می باشد. همانظور که می دانید php دیگر از دستورات mysql پشتیبانی نمی کند و این دستور دیگر منسوخ شده و توصیه نمی شود، زیرا دستورات mysql دارای حفره های امنیتی بوده و اگر نمی خواهید هک شوید که قطعا همینطور است، دیگر از دستورات mysql استفاده نکنید!

حتما می گویید پس از چه دستوراتی برای کار با پایگاه داده استفاده کنیم. php افزونه های mysqli و PDO را به شما پیشنهاد می دهد.

این دو افزونه هردو دارای سرعت بالاتر و امنیت بیشتری نسبت به mysql بوده و از شئ گرایی پشتیبانی می کنند. البته mysqli هم از شئ گرایی بهره می برد هم از برنامه نویسی رویه گرایی که “پی-دی-او” فقط از شئ گرایی پشتیبانی می کند.

البته “پی-دی-او” از ۱۲ نوع پایگاه داده مختلف نیز پشتیبانی می کند که شامل : mysqli ،oracle ،mssql ،Firebird و … می باشد.

آموزش PDO در php

PDO بر خلاف دو روش قبلی، تنها با استفاده از سیستم شیئ‌گرایی قابل استفاده است. و مانند mysql و mysqli توابعی برای خواندن و نوشتن اطلاعات از پایگاه داده در اختیار برنامه‌نویسان قرار نمی‌دهد.

ارتباط با پایگاه داده در PDO به شکل زیر انجام می‌شود:

قرارگیری عبارت «mysql» در ابتدای dsn یا Data Source Name بالا سبب می‌شود تا PDO برای ارتباط با پایگاه داده از افزونه‌ی MySql استفاده کند.

در خط بعدی از برقراری ارتباط با پایگاه داده، با کمک دستور exec، نوع کدگذاری رشته‌های ارسال شده و دریافت شده به پایگاه داده را تعیین می‌کنیم. انجام این کار برای دریافت و ارسال عبارت‌های یونیکد و به زبان فارسی الزامی است.

اکنون برای خواندن اطلاعات به شکل زیر عمل خواهیم کرد:

مقدار بازگشتی در دستور query یک PDOStatement است که می‌تواند برای خواندن تک تک ردیف‌های دارای شرط کوئری مورد استفاده قرار گیرد.

همچنین می‌توانیم تعداد ردیف‌های موجود در PDOStatement را به صورت زیر محاسبه کنیم:

PDO علاوه بر پشتیبانی از سیستم قدیمی جلوگیری از SQL Injection، از روش جدید Prepared Statement هم پشتیبانی می‌کند که مانع رخداد خطاهای امنیتی می‌شود. در ادامه کدهایی برای شیوه‌ی عملکرد هر دو روش مشاهده می‌کنید:

با ارسال پارامتر به دستور execute می‌توانیم از دستورات bindValue صرف نظر و کدهای نوشته‌شده را کوتاه‌تر کنیم:

یکی دیگر از موارد مورد نیاز در هنگام خواندن و نوشتن اطلاعات از پایگاه داده، Transaction ها هستند.

Transaction زمانی کاربرد دارد که بخواهیم چندین کوئری را همراه یکدیگری اجرا کنیم و اگر به هر دلیل خطایی در یکی از کوئری‌ها ایجاد شد، تمامی کارهای انجام شده تا کنون به حالت قبل برگردند. مزیت دیگر استفاده از Transaction افزایش سرعت ذخیره‌سازی اطلاعات است. زیرا در حالت پیش‌فرض پس از هر ذخیره‌سازی اطلاعات، بررسی‌های امنیتی از ذخیره‌سازی کامل اطلاعات به انجام می‌رسد که نیازمند صرف مقداری زمان است. با استفاده از Transaction این عملیات تنها یک بار پس از پایان تمامی دستورات انجام خواهد شد.

برای ایجاد یک Transaction به شیوه‌ی زیر عمل می‌کنیم:

در مثال زیر قصد داریم با “پی-دی-او” به بانک mysql وصل شویم.همچنین نحوه استفاده دستورات آماده prepared را آورده ایم و می گوییم چگونه پارامترها را Bind کنید:

 

 

 

این خبر را به اشتراک بگذارید :