اتصال به دیتابیس با mysqli

  • آپدیت شده در تاریخ

در آموزش اتصال به دیتابیس با mysqli ، قصد داریم نحوه پیادی سازی عملیات CRUD توسط MYSQLi و prepared statement را یاد بگیریم

Mysqli چیست ؟

در نسخه های قدیمی تر PHP مثل PHP4 از mysql استفاده میشد و کاملا برای تمامی برنامه نویس ها جا افتاده بود. اما در نسخه های جدید php یعنی در حال حاضر  PHP7 و PHP5.6 برای کار با دیتابیس از افزونه پیشرفته تری استفاده میشه. این افزونه که بهینه شده ی MySql هست MySqli نامگذاری شده. (افزونه PDO برای اتصال به انواع دیتابیس ها در PHP)

  • در این ماژول شما میتونید هم بصورت شی گرایی یا  Object Oriented کار کنید هم بصورت  Procedural . البته روش شی گرایی انعطاف پذیر تر هست و شما راحت تر میتونید باهاش کار کنید.
  • MySqli فقط با دیتابیس MySql سازگاری داره.
  • MySqli میتونه Stored Procedure رو هم Call کنه که این از نظر  Sql Injection امنیت شمارو تامین میکنه.
  •  MySqli توسعه یافته ی MySql هست و طبق تجارب بدست اومده سرعت عملکردش از PDO هم بیشتره.
  • اگر کنترل پنل شما ویندوز و یا لینوکس باشه ، MySqli بطور کامل روی کنترل پنلتون نصب هست و نیازی به نصب ندارید.

نکته : اگر Procedural یا همان رویه ای کار می کنید تفاوتی بین  MySql و  MySqli نمیبینید جر اینکه حرف i به دستورات اضافه شده، اما شی گرایی کاملا متفاوت عمل میکنه.

Prepared statement چیست ؟ یک قابلیت برای اجرای کردن یک دستور SQL مشابه به دفعات زیاد و با کارایی بالا است . در واقع دستورات prepare شده یک قالب استاندارد برای دستورات SQL است .

استفاده از دستورات از پیش تعیین شده یا همان prepared statement از لحاظ کارایی ، سرعت و امنیت ، مزیت های زیادی دارد . با استفاده از این متد ، کوئری برای بار اول کامپایل شده و منابع مورد نظر ساخته و در دستورات prepare شده ذخیره می شوند . این شئ (object) برای دفعات بعد در کدهایمان استفاده می شوند که باعث کاهش زمان اجرا (execute) می شوند.

اتصال به دیتابیس با mysqli

در این مثال از اتصال به دیتابیس با mysqli، من یک جدول employee در دیتابیس با عملیات CRUD می سازم . ما به دیتابیس متصل و یک کوئری را برای INSERT ،UPDATE، DELETE، SELECT آماده می کنیم .

بعد اگر نیاز بود ، مقادیر را به پارامتر های کوئری ، Bind میکنیم . در مقاله قبلی در مورد آموزش pdo در php دیدم.

 

Create توسط prepared Statement

این کد از اتصال به دیتابیس با mysqli ، به شما یک فرم HTML برای ثبت یک سطر جدید در دیتابیس را نشان می دهد. سه فیلد برای جمعاوری اطلاعات کارکنان (employee) وجود دارد . با ارسال (submit) این فرم ، داده فیلد های این فرم به صفحه php ارسال می شود.

در کد php ، دستور sql برای insert و bind کردن مقادیر فرم به پارامتر های کوئری ایجاد می شود .

خواندن سطر ها

کد زیر برای خواندن لیست کارکنان از دیتابیس به کار می رود . این لیست شامل عملیاتی برای ویرایش یا حذف هر کدام دارد.

اتصال به دیتابیس با mysqli

Update توسط prepared Statement

با کلیک بروی گزینه عملیات ویرایش در لیست بالا ، فرم ویرایش کارکنان برای کاربر نمایش داده می شود . بعد از submit داده های ویرایش شده فرم ، prepared Statement برای اجرای دستور update ساخته می شود.

حذف توسط prepared Statement

در این قسمت از کد php اتصال به دیتابیس با mysqli ، به شما ساخت کوئری delete برای حذف یک سطر از جدول با استفاده از دستورات prepare شده را نشان می دهیم . این صفحه زمانی اجرا می شود که گزینه delete در لیست بالا انتخاب شده باشد . ID کارمند مورد با استفاده از متد GET به این صفحه ارسال می شود . این آی دی در کوئری مورد نظر برای حذف یک سطر مشخص استفاده می شود.

امیدوارم از آموزش اتصال به دیتابیس با mysqli لذت برده باشید.

برای دانلود سورس کد اتصال به دیتابیس با mysqli از قسمت زیر اقدام کنید

هر سوالی داشتید, از طریق قسمت نظرات ارسال کنید. سریعا, پاسخگوی سوالات شما هستیم.

موفق و پیروز باشید.

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۱۰)

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

  1. محمد ۲۰ مهر ۱۳۹۸

    سلام
    خیلی ممنونن بابت آموزش عالیتون یک سوال برام پیش اگر بخوایم تعدا ردیف هایی که در پایگاه داده mysqli دخیره شده (منظورم تمامی اطلاعات هستش که در یک table ذخیره شده) راه به صورت عدد نمایش دهیم از چه کد php باید استفاده کنیم؟

    پاسخ
    1. حسن شفیعی ۲۱ مهر ۱۳۹۸

      سلام. خوشحالیم که مفید واقع شده.
      از mysqli_num_rows استفاده کنید :

      موفق باشید.

      پاسخ
  2. حامد ۵ شهریور ۱۳۹۸

    سلام من میخوام یه بخش توی سایتم درست کنم که این سیستم اول به دیتابیس وصل بشه بعد به جدولی که میخوام متصل بشه
    بعد با اچ تی ام ال یک فرم بنویسم که از کاربر کد ملی شو بگیر وقتی کد ملی وارد شد سیستم توی اون جدولی که مشخص کردیم اگر اون کد ملی و پیدا کرد اطلاعاتش و نشون بده مثلا بگه نام شما فلان هست و نام خانوادکی شما فلانه . آموزششو دارید توی سایت؟

    پاسخ
    1. حسن شفیعی ۵ شهریور ۱۳۹۸

      سلام. باید با ترکیب این آموزش با آموزش https://netparadis.com/post-get-variables-php , اسکریپت موردنظر رو بنویسید.
      موفق باشید.

      پاسخ
  3. zahra ۳ شهریور ۱۳۹۷

    سلام خسته نباشید
    من یه منو با html ساختم که میخوام وقتی روی هر کدوم از optionها کلیک میکنم عکس های مربوط به اون موضوع خاص رو نمایش بده میشه لطفا راهنمایی کنین ممنون.

    پاسخ
    1. حسن شفیعی ۱۰ شهریور ۱۳۹۷

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

      پاسخ
  4. mohammad ۱۹ دی ۱۳۹۶

    سلام
    برای جلوگیری ازsql injection در mysqli کد خاصی باید نوشت چون دستورات جلوگیری از injection در mysql تو mysqli کار نمیکنه و خطا میده

    پاسخ
    1. حسن شفیعی ۱۹ دی ۱۳۹۶

      سلام . برای جلوگیری از sql injection در استفاده از اکستنشن mysqli هنگام اتصال به دیتابیس بهتر است که مقادیر را مستقیما در کویری خود استفاده نکنید و برای همین کویری sql خود را prepare کنید تا در هنگام bind کردن داده های کاربر در کویری موارد غیرضروری که باعث break شدن دستور sql و بروز باگ sqli میشود جلوگیره بشه .
      به عنوان مثال میتوانید به اینصورت کویری خود را اجرا کنید تا جلوی باگ sql injection گرفته بشه .

      همچنین میتوانید در هنگام دریافت مقادیر عددی از دستور intval و شرط های مربوط استفاده کنید تا ورودی های غیر ضروری از داده های دریافتی حذف بشه .
      یکی دیگر از توابع پر کاربر filter_var است که بطور کامل میتوانید ورودی ها را کنترل و حتی قبل از استفاده در کویری sanitize یا همان پاکسازی کنید

      اعتبار سنجی فرم ها در php

      موفق و پیروز باشید

      پاسخ
  5. یاسین ۳ مهر ۱۳۹۶

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

    و با این دستور میگم اگه برابر صفر نبود چاپ کنه :

    ولی فقط متن و موضوع اولی رو نشون میده و بقیه رو نشون نمیده.
    چجوری باید ای دی هر کدوم رو جدا دریافت یا در رشته ای بریزم؟

    با تشکر از سایت خوبتون و خودتون 🙂

    پاسخ
    1. حسن شفیعی ۳ مهر ۱۳۹۶

      سلام . مرسی . برای اینکار شما باید از حلقه ها استفاده کنید . مثلا من از حلقه while استفاده می کنم و میگم تا زمانی که سطری در جدول بود حلقه ادامه پیدا کنه که در اینصورت همه ی سطر های مربوط به اون یوزر رو میکشه بیرون

      ممنونم . موفق باشید

      پاسخ
دوره های آموزشی