آموزش طراحی وب

stored procedure در MySql چیست؟

همونطور که در جلسات گذشته آموزش دادیم در PDO و MySqli میتونید از SP ها استفاده کنید. این عمل باعث میشه امنیت کوئری های شما تامین بشه و از Sql Injection در امان بمونید.

stored procedure

سلام خدمت همراهان همیشگی مدرسه مجازی ایرانیان

در این جلسه راجع به Stored Procedure ها صحبت می کنیم و نحوه ی کار با SP هارو توضیح میدیم. همونطور که در جلسات گذشته آموزش دادیم در PDO و  MySqli میتونید از  SP ها استفاده کنید. این عمل باعث میشه امنیت کوئری های شما تامین بشه و از Sql Injection در امان بمونید.

stored procedure و یا sp چیست؟

stored procedure ها رویه هایی هستند که شما میتونید پارامتر ورودی به اونها بدید و کوئری های MySql رو اجرا کنید، نتیجه ی اون میتونه شامل خروجی باشه میتونه هم نباشه و فقط دستوری اجرا بشه . مثلا برای نوشتن دستورات  Select , Update , delete و … میتونید از SP ها استفاده کنید.

زمانی شما خروجی دریافت میکنید که چیزی رو select کرده باشید و زمانی هم که  update , delete , insert انجام میدید فقط یه کوئری رو  Execute و اجرا کردید که در نتیجه مقداری رو به عنوان خروجی به شما برنمیگردونه.

در صورتی که SP هارو همراه با PDO استفاده کنید نتیجه ی بسیار موثری خواهید گرفت. زمانی که Sp یکمرتبه اجرا میشه، در حافظه ذخیره میشه و برای فراخوانی مجدد نیاز به سپری کردن زمان اولیه نیست و سریع کوئری اجرا میشه پس سرعت بالایی در اجرای دستورات خواهید داشت.

در یک SP شما میتونید چندین کوئری رو اجرا کنید و حتی از دستورات If condition و دستورات شرطی هم استفاده کنید. میتونید متغییر تعریف کنید و متغییر رو مقدار دهی کنید و در کوئری ها و دستورات شرطی به کار ببرید . همه ی این مراحل سمت mysql اجرا میشه و سرعت بالایی هم خواهد داشت.

پس تا الان به چند مزیت Stored Procedure اشاره کردیم:

  • امنیت بالا در اجرای کوئری ها
  • سرعت بالا در اجرای کوئری ها
  • اجرای چندین کوئری در یک  SP
  • استفاده از دستورات  IF و  Else در SP
  • استفاده از متغییرها و ذخیره سازی مقادیر در متغییرها

 

نحوه ی نوشتن Stored Procedure در MYSQL :

به عنوان مثال ما میخوایم از جدول کاربرها، کاربری رو انتخاب کنیم که id اون مقدار ۳۰ رو داره. خوب برای نوشتن همچین دستوری باید به کوئری id کاربر رو پاس بدیم و با توجه به id کاربر که یک شناسه ی منحصر به فرد هست ، اطلاعات کاربر مورد نظر که id اون برابر با ۳۰ هست رو بگیریم و نمایش بدیم.

در این حالت id میشه پارامتر ورودی ما و خروجی که به ما برمیگردونه، اطلاعات و فیلدهای مربوط به کاربر شماره ۳۰ هست. پس sp ما به شکل زیر خواهد بود:

برای اینکه کاراکترهای فارسی هم پشتیبانی بشه از SET NAMES UTF8; استفاده کردیم.

خوب حالا برای اجرای این کوئری کافیه اون رو CALL کنیم :

به همین راحتی : )

البته نوشتن کوئری های پیچیده کمی سخت هست، اما کم کم یاد میگیرید پیچیده ترین SP هارو هم بنویسید. در سیاره ی MYSQL بخش وسیعی از SP هارو قرار خواهیم داد.

خوب دوستان امیدوارم که این مقاله براتون مفید بوده باشه.

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

تهیه شده در مدرسه مجازی ایرانیان

حسین همت یار

نویسنده در مدرسه مجازی ایرانیان ، دانشجوی رشته IT ، طراح وب و علاقه مند به تازه های دنیای اینترنت و وب و البته لینوکس

دیدگاه ۲

    • سلام دوست عزیز
      prepared سمت php نوشته میشه ولی sp رو شما در mysql درج می کنید و در php فقط call میکنید. یعنی کوئری شما تو کدهای php تون نیست دیگه .

آیا سوالی دارید؟

پنل کاربران

بستن
*
*

نظرسنجی

به کدام دسته موضوعی علاقه مند هستید؟

آخرین پرسش و پاسخ ها

اموزش تصادفی

خبرهای باحال دریافت کن

خبرهای باحال دریافت کن

ما هم مثل شما از دریافت ایمیل های مزاحم خوشمون نمیاد. فقط مطالب جدید و خبرهای ویژه رو به اطلاع شما میرسونیم. قول میدیم اسپم نکنیم :)

ثبت نام انجام شد ، لطفا ایمیلی که براتون ارسال میشه رو تایید کنین