بیانیه های آماده و پارامترهای محدود(Prepared Statements and Bound Parameters)


یک دستور آماده شده یک ویژگی است که برای اجرای SQL یکسان (یا مشابه) استفاده می شود
عبارات مکرر با کارایی بالا.


عبارات آماده شده اساساً به این صورت عمل می کنند:



  1. Prepare: یک قالب بیانیه SQL ایجاد و به پایگاه داده ارسال می شود. مقادیر مشخصی نامشخص باقی می‌مانند که به آنها پارامتر گفته می‌شود (با برچسب "?"). مثال: INSERT INTO MyGuests VALUES(?, ?, ?)

  2. پایگاه داده تجزیه، کامپایل، و بهینه سازی پرس و جو را در قالب دستور SQL انجام می دهد و نتیجه را بدون اجرای آن ذخیره می کند

  3. Execute: در زمان بعدی، برنامه مقادیر را به پارامترها متصل می کند و پایگاه داده دستور را اجرا می کند. برنامه ممکن است عبارت را هر چند بار که بخواهد با مقادیر مختلف اجرا کند


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



  • عبارات آماده شده زمان تجزیه را کاهش می دهد زیرا آماده سازی روی پرس و جو فقط یک بار انجام می شود (اگرچه دستور چندین بار اجرا می شود)

  • پارامترهای محدود پهنای باند را برای سرور به حداقل می‌رسانند، زیرا باید هر بار فقط پارامترها را ارسال کنید و نه کل پرس و جو را

  • عبارات آماده شده در برابر تزریق SQL بسیار مفید هستند، زیرا مقادیر پارامتر که بعداً با استفاده از پروتکل دیگری منتقل می شوند، نیازی به فرار صحیح ندارند. اگر قالب دستور اصلی از ورودی خارجی مشتق نشده باشد، تزریق SQL نمی تواند انجام شود.