دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۷
  • تیر

جلسه ۴۱ : آموزش کار با دستور Prepared در php 7

  • دسته‌بندی‌ها :
جلسه ۴۱ : آموزش کار با دستور Prepared در php 7
    • جزئیات
    • نوع محتواآموزشی

      مقدمه

      با عرض سلام و وقت به خیر خدمت کاربران سایت پی وی لرن و کاربرانی که دوره ی آموزش php 7 را دنبال می کنند.
      در جلسه گذشته آموزش وارد کردن چندین رکورد به MySQL را به طرفدارن و علاقمندان این دوره ارائه کردیم. در ادامه این دوره شما را به آموزش کار با دستور Prepared در php 7 دعوت می نماییم.

      آموزش کار با دستور Prepared در php 7

      مروری بر جلسات گذشته

      در جلسات گذشته آموختیم که می توان با PHP، شما به پایگاه داده ها متصل شوید و آن را دستکاری کرد.
      و MySQL محبوب ترین سیستم پایگاه داده مورد استفاده در PHP است.
      در ادامه یاد گرفتیم که می توان پایگاه داده MySQL را به php 7 متصل نمود.

      نسخه php 5 و نسخه های بعدتر از آن می توانند از پایگاه داده MySQL زیر استفاده نماید:

      • MySQLi extension 
      • (PDO (PHP Data Objects

      نسخه های اولیه PHP از افزونه MySQL استفاده می کردند اما این افزونه در سال ۲۰۱۲ منسوخ شد.
      در جلسه ۳۶ با آموزش ساخت MySQL در php 7 آشنا شدیم و آموختیم که :
      یک پایگاه داده شامل یک یا چند جدول است و  برای ایجاد یا حذف یک پایگاه داده MySQL، به مجوزهای ویژه CREATE نیاز خواهید داشت.
      در جلسه بعد از آن از دستور CREATE TABLE برای ایجاد یک جدول در MySQL استفاده کردیم.
      در جلسه ۳۸ نیز وارد کردن داده به MySQL در php 7 را فرا گرفتیم و در نهایت در جلسه ۳۹ نیز  آموختیم که چگونه می توان  ID و یا شناسه یک رکورد را پیدا کرد.
      در جلسه گذشته نیز آموختیم که با روش PDO  و MySQLi می توان چندین رکورد مختلف را به پایگاه داده MySQL وارد نمود.

      دستور Prepared در php 7

      دستور Prepared برای تزریق کدهای SQL بسیار مفید است.

      دستور Prepared و پارامتر Bound

      یک دستور prepared در واقع ویژگی ای است که برای یک دستور SQL را با کارایی بالایی مکرراً اجرا می کند.
      دستور Prepared عمدتاً به صورت زیر کار می کند.

      • Prepare : قالب دستوری SQL ایجاد شده و به پایگاه داده ارسال می شود.
        تعدادی از مقادیر مشخص تعیین نشده پارامترها را فراخوانی می کنند( برچسب “?”) .
        مثال: (?, ?, ?)INSERT INTO MyGuests VALUES
      • پایگاه داده پردازش، کامپایل و بهینه سازی کوئری را در قالب بیانیه SQL انجام می دهد و نتیجه را بدون اجرای آن ذخیره می کند.
      • Execute : بعد از مدتی برنامه مقادیر را به پارامترها متصل می کند، و پایگاه داده این دستور را اجرا می کند.
        این برنامه ممکن است این دستور را هر چند بار که می خواهد با مقادیر مختلف اجرا نماید.

      در مقایسه با اجرای دستور SQL به طور مستقیم، دستور prepared سه مزیت اصلی دارد:

      • دستور prepared زمان تجزیه را کاهش می دهد، زیرا آماده سازی در کوئری تنها یک بار انجام می شود (هرچند دستور چند بار اجرا می شود).
      • پارامترهای متصل به پهنای باند به سرور محدود می شود، زیرا فقط نیاز به ارسال پارامتر در به صورت دائمی ( و نه کل کوئری است).
      • دستور prepared در برابر تزریق SQL بسیار مفید است، زیرا مقادیر پارامترهایی که بعدا با استفاده از پروتکل های مختلف انتقال می یابند، به درستی escaped نمی شوند.
        اگر قالب بیانیه اصلی از ورودی خارجی استخراج نشده باشد، تزریق SQL نمی تواند رخ دهد.

      در آموزش کار با دستور Prepared در php 7 با این دستور هم در MySQLi و هم PDO آشنا می شویم.

      دستور prepared در MySQLi

      مثال زیر از دستور prepared و پارامتر bound استفاده می کند:

      مثال : Example (MySQLi with Prepared Statements

      توضیح خطوط کد برای مثال در بالا:

      مثال : 

      در SQL ما یک علامت سوال (؟) را وارد می کنیم که در آن می خواهیم در یک عدد صحیح، رشته، double یا مقدار blob جایگزین کنیم.

      حالا بیایید یک نگاه به تابع ()bind_param بی اندازیم.

      مثال : 

      این تابع پارامترها را به query SQL متصل می کند و به پایگاه داده می گوید که پارامترها چه هستند.
      آرگومان “sss” نوع داده هایی را که پارامترها هستند را لیست می کند.
      کاراکتر S به mysql می گوید که پارامتر یک رشته است.

      این آرگومان می تواند یکی از چهار نوع types باشد:

      • i – integer
      • d – double
      • s – string
      • b – BLOB

      باید برای هر یک از پارامترها یکی از این موارد بالا را داشته باشیم.
      با گفتن به mysql که نوع داده ای که در نظر گرفته می شود چیست؛ می توان ریسک تزریق SQL را کاهش داد.

      نکته

      اگر ما می خواهید داده ها را از منابع خارجی (مانند ورودی کاربر) وارد کنید پردازش و تایید داده ها بسیار مهم است.
      آموزش کار با دستور Prepared در php 7را با دستور Prepared در PDO به پایان می رسانیم.

      دستور prepared در PDO

      مثال زیر از دستور prepared و پارامترهای مرتبط در PDO استفاده می کند:

      مثال : Example (PDO with Prepared Statements

      کلام آخر

      در این جلسه به آموزش کار با دستور Prepared در php 7 پرداختیم.
      در این جلسه آموختیم که یک دستور prepared در واقع ویژگی ای است که برای یک دستور SQL را با کارایی بالایی مکرراً اجرا می کند و ویژگی های خوبی دارد که اجرای SQL را تسهیل می نماید.
      در جلسه بعد به انتخاب داده از MySQL می پردازیم.
      با پی وی لرن همراه باشید.

      QR:  جلسه ۴۱ : آموزش کار با دستور Prepared در php 7
      به اشتراک بگذارید