Share on facebook
Share on twitter
Share on linkedin
Share on email
Share on whatsapp
Share on telegram
Share on print
جلسه هجدهم PHP دستورات آماده SQL در mysqli

نویسنده:

سجاد حسین زاده

Statistics-rafiki

تعداد بازدید:

2415

Calendar-amico (2)

تاریخ انتشار:

1398-04-06

Work time-rafiki

زمان تقریبی مطالعه:

5 دقیقه

جلسه هجدهم PHP: آموزش کامل زبان برنامه نویسی پی اچ پی مقدماتی تا پیشرفته

در این مقاله از کدپز با جلسه هجدهم PHP که با دو موضوع دریافت آخرین شناسه در پایگاه داده MySQL

و  آَشنایی با کاربرد دستورات آماده PHP در MySQL می باشد، در خدمت شما هستیم.

در قسمت قبل در جلسه هفدهم PHP نحوه وارد کردن اطلاعات به صورت تکی و چند تایی در پایگاه داده MySQL را به طور کامل با ذکر مثال بیان کردیم.

هشتمین جلسه از PHP پیشرفته

در پایان این جلسه:

دستورات آماده PHP در MySQL را بررسی خواهیم کرد.

و همچنین نحوه ی دریافت آخرین شناسه در پایگاه داده MySQL با زبان PHP را در جلسه هجدهم PHP آموزش خواهید دید. با ما همراه باشید.

دریافت آخرین شناسه در پایگاه داده MySQL

اگر ویژگی AUTO_INCREMENT را در یک فیلد فعال باشد و ما دستور INSERT و یا UPDATE را اجرا  کنیم، می توانیم بلافاصله ID آخرین شناسه وارد شده را دریافت کنیم. در مثال زیر ستون “id” در جدول “MyGuests” ویژگی AUTO_INCREMENT را دارا است.

مثال های زیر همانند مثال های جلسه هفدهم PHP می باشد. که در جلسه قبل ذکر شد. تنها یک خط جدید برای یافتن ID آخرین شناسه وارد شده اضافی شده است. همچنین آخرین ID وارد شده را چاپ کردیم.

به ۳ مثال زیر از جلسه هجدهم PHP توجه کنید.

مثال اول: به صورت MySQL (شی گرایی):

مثال دوم از : به صورت MySQL (رویه ایی):

مثال سوم از جلسه هجدهم PHP : به صورت PDO

دستورات آماده PHP در MySQL

دستورات آماده ای که بیان می کنیم بسیار پر کاربرد برای مقابله با SQL injection هستند.

معرفی دستورات آماده PHP و پارامتر های مرتبط با آن

یک دستور آماده یک ویژگی ست که در مقابل استفاده چندین بار دستورات شبیه به هم SQL با راندمان بالا استفاده می شود.

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

به ۳ مورد زیر از جلسه هجدهم PHP توجه نمایید.

_ آماده سازی: یک دستور SQL  ایجاد شده و به پایگاه داده ارسال می شود. برخی مقادیر پارامتر هایی نامیده می شوند که به صورت نامشخص باقی می مانند. برای مثال:

  1. _ پایگاه داده دستور SQL را می خواند. و نتیجه را بدون اجرا آن ذخیره می کند. البته با استفاده از بهینه سازی query یا query optimization سریع ترین راه را برای اجرای آن مشخص می کند. اما به هر حال در آخر نتایج حاصل از query را بدون اجرای نهایی در حافظه نگهداری می کند.
  2. _ اجرا: در مرحله آخر، برنامه مقادیر را به پارامترها ارسال می کند حال پایگاه داده دستور SQL را اجرا می کند. برنامه می تواند یک دستور SQL را با value های متفاوت، به هرتعداد که بخواهد اجرا کند.

شما در حال آموزش و یادگیری جلسه هجدهم PHP می باشید.

در مقایسه با اجرای دستورات SQL به صورت مستقیم، دستورات آماده ۳ ویژگی به خصوص دارند که در ادامه جلسه هجدهم PHP به آن می پردازیم:

_ دستورات آماده، زمان پردازش کد ها را کاهش می دهند. زیرا آماده سازی query تنها یک بار انجام می شود. (هرچند دستور چند بار اجرا می شود).

_ پارامتر های متصل حجم ارسالی به سرور را  بسیار کاهش می دهند. زیر در هر بار اجرا کد تنها نیاز به ارسال پارامتر ها است و نه تمام query.

_ همانطور که پیش تر گفته شد دستورات آماده بسیار پر کاربرد برای مقابله با SQL injection هستند. زیرا مقادیر پارامتر ها که با استفاده از یک پروتکل مختلف منتقل می شوند، از حملات SQL جلوگیری می کنند.

دستورات آماده SQL در mysqli

در مثال زیر از جلسه هجدهم PHP ، از دستورات آماده و پارامتر های متصل در mysqli استفاده می شود.

توضیح قسمتی از کد بالا از جلسه هجدهم PHP :

در دستور SQL ما یک علامت سوال را در جایی که می خواهیم یک string و double را جایگزین کنیم، قرار داده ایم. حال به کد تابع ()bind_parap نگاه کنید.

این تابع پارامتر ها را به کوئری SQL ارسال می کند. و البته نوع پارامتر ها را به دیتابیس می گوید. پارامتر “sss” نوع داده ها را لیست می کند. کاراکتر “s” نیز به دیتابیس متذکر می شود که با string سروکار دارد.

کاراکتر این پارامتر می تواند یکی از ۴ نوع زیر باشد:

به انواع آن از جلسه هجدهم PHP توجه نمایید.

_ i = integer

_ d = double

_ s = string

_ b = BLOB

هر پارامتر یکی از این ۴ نوع می باشد.

همچنین زمانی که نوع داده را حتما تعیین می کنیم، ریسک حملات SQL injection کاهش می یابد.

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

در مثال زیر از جلسه هجدهم PHP ، از دستورات آماده و پارامتر های متصل در PDO استفاده می شود.

تبریک میگم شما موفق شدید تا جلسه هجدهم PHP از کدپز را پشت سر بگذارید.

📝<<به خودت برای این همه راهی که اومدی افتخار کن و به خودت برای مسیری که باید بری ایمان داشته باش. . . . >> ☑️

سجاد حسین زاده

سجاد حسین زاده

سجاد حسین زاده هستم متولد کرج, بنده از سال ۹۴ سابقه حضور در حوزه وب را دارم. و روزبه‌روز در حال رشد و ارتقای خودم تو این زمینه هستم. از علایقم که بخوام به گم: خب واضحه که عاشق کدنویسی هستم. و همچنین من از معدود افراد برنامه‌نویس ورزشکار هم به‌حساب میام.

تا کنون 56 نفر در کدپز ثبت نام کرده اند.

6 پاسخ به "جلسه هجدهم PHP: دستورات آماده mysql و دربافت آخرین شناسه mysql در PHP"

  1. مهرشاد ولیزاده ارجمند9 , تیر , 1399 از 14:04پاسخ

    سلام
    به نظرم قبل از این جمله sql injection رو توضیح بدین چون من رفتم سایت های دیگه خوندمش:
    «دستورات آماده PHP در MySQL
    دستورات آماده ای که بیان می کنیم بسیار پر کاربرد برای مقابله با SQL injection هستند.»

    • با سلام
      ممنون از پیشنهاد به جا ودرست شما.
      به زودی مقاله‌ای با موضوع SQL injection در PHP منتشر خواهیم کرد و در همین جا لینک آن را قرار خواهیم داد. اما اگر توضیحی کوتاه در این باره بخواهید باید بگویم که:
      اگر شما ورودی کاربر را بدون اعتبار سنجی و sanitize کردن در یک کوئری قرار دهید، مهاجم این توانایی را دارد که کوئری و خروجی را مطابق با خواسته خود تغییر دهد.

      یک حمله موفق SQL Injection می‌تواند منجر به سرقت اطلاعاتی مثل: نام کاربری، رمز عبور، اطلاعات کارت اعتباری و یا هرگونه اطلاعات مهم و حساسی شود. در برخی موارد این حملات می‌تواند منجر به آسیب دیدن کل سرور شود.

  2. مهرشاد ولیزاده ارجمند12 , تیر , 1399 از 16:00پاسخ

    سلام
    میشه کاری کرد که کاربر هر جوری ورودی وارد کرد برنامه کوئری SQL رو تغییر نده و هک نشه؟
    البته فکر کنم با دستورات آماده ای که معرفی کردین اینجوری میشه ولی خواستم مطمئن شم

  3. مهرشاد ولیزاده ارجمند12 , تیر , 1399 از 16:38پاسخ

    همچنین بخاطر اینکه سایت خوبی دارین و دنبال بهبود سایت هستین و مطلب جدید میذارین ممنون

ارسال یک پیام

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *