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



  • ۳
  • آذر

جلسه ۳۴ : دستورات آماده در MySQL

  • دسته‌بندی‌ها :
جلسه ۳۴ : دستورات آماده در MySQL
    • جزئیات
    • نوع محتواآموزش تصویری

      با سلام و عرض ادب خدمت کاربران محترم سایت پی وی لرن. در این جلسه قصد داریم تا دستورات آماده در MySQL ، دستورات آماده در MySQLi  و دستورات آماده در PDO  را فرا بگیریم.

      دستورات آماده در برابر SQL injection ها بسیار مفید هستند.

      دستورات آماده و پارامتر های مرتبط

      یک دستور آماده ویژگی هست که برای اجرای مشابه دستورات SQL بار ها و بار ها استفاده می شود.

      دستورات آماده اساسا به این صورت کار می کنند:

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

       

      دستورات آماده در مقایسه با دستورات مستقیم SQL سه مزیت اصلی دارند:

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

       

      دستورات آماده در MySQLi

      مثال زیر استفاده از دستورات آماده و پارامتر های مرتبط را در MySQLi نشان می دهد:

      مثال : 

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

      مثال : 

      ما یک علامت سوال (؟) در جایی که می خواهیم یک integer, string و double را جایگزین کنیم، درج کرده ایم.

      مثال : 

      تابع ()bind_param پارامتر ها را به کوئری SQL وصل می کند.
      آرگومان “sss” انواع داده پارامتر ها را لیست می کند. کاراکتر s مشخص می کند که پارامتر یک string یا رشته می باشد.

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

      • i – عدد صحیح (integer)
      • d – عدد اعشاری (double)
      • s – رشته (sstring)
      • b – ی BLOB

      با مشخص کردن نوع داده ای را که mysql انتظار آن را دارد، ریسک SQL injection را کاهش می دهیم.

      نکته: اگر می خواهیم تا هر نوع داده ای را از ورودی های خارجی استفاده کنیم، حتما باید آن را اعتبار سنجی کنیم.

       

      دستورات آماده در PDO

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

      مثال : 

      جلسه کار با دستورات آماده در MySQL نیز به پایان رسید.
      در جلسه بعد نحوه استفاده از دستور SELECT در MySQL را خواهیم آموخت.

      QR:  جلسه ۳۴ : دستورات آماده در MySQL
      به اشتراک بگذارید