اتصال و کار با پایگاه داده mysql توسط متدهای mysqli

1396/4/23 علیرضا حاتمی نیا 549

php mysqli

مقدمه

با سلام خدمت شما کاربر محترم وبسایت ilikephp من علیرضا حاتمی نیا هستم و با قسمتی دیگر از آموزش PHP از سری آموزش های برنامه نویسی در خدمت شما هستم.
در جلسه قبل با آموزش کاربرد POST و GET در PHP آشنا شدیم. در این جلسه به آموزش اتصال و کار با دیتابیس mysql توسط تابع mysqli می پردازیم.
پیش نیاز یادگیری این مبحث آشنایی قبلی با دستورات SQL می باشد. اگر با مفاهیم پایگاه داده آشنایی ندارید پیشنهاد می کنم آموزش SQL Server را مطالعه کنید. همانطور که می دانید در زبان پایگاه داده SQL چهار درخواست یا query اصلی وجود دارد که عبارتند از :

  • انتخاب یا select
  • درج یا insert
  • حذف یا delete
  • به روز رسانی یا update 

در این مبحث ضمن آموزش اتصال به پایگاه داده mysql با نحوه ارسال query نیز آشنا می شوید.
در PHP جهت اتصال به پایگاه داده mysql از دو روش استفاده می شود. اولین روش استفاده از توابع و متدهای افزونه mysqli است که همان نسخه بهبود یافته افزونه  mysql است. و روش دیگر PDO می باشد که در این روش علاوه بر مدیریت پایگاه داده mysql می توانید 11 نوع از پایگاه داده های مختلف دیگر از جمله اوراکل را نیز مدیریت کنید. هر دوی این روش ها محبوب ، ایمن و شی گرا هستند و بنا به نیاز پروژه تان می توانید از این روشها جهت استفاده و مدیریت پایگاه داده استفاده کنید. 

اتصال به پایگاه داده توسط mysqli 

در php قبل از کار با پایگاه داده بایستی ابتدا با پایگاه داده mysql اتصال برقرار کنید. صورت کلی اتصال به mysql توسط متدی به نام mysqli_connect صورت می پذیرد که به شکل زیر است : 

mysqli_connect(host,username,password,dbname);

همانطور که میبینید این متد دارای 4 پارامتر است. پارامتر اول host که نام سروری که پایگاه داده روی آن نصب است می باشد و معمولا این نام را برابر localhost قرار می دهند. 

  • پارامتر دوم username که همان نام کاربری است که برای استفاده از پایگاه داده استفاده می شود. در حالت پیش فرض این نام معمولا root است. 
  • پارامتر سوم password که همان کلمه عبوری است که برای نام کاربری جهت اتصال به پایگاه داده استفاده می شود. کلمه عبور به صورت پیش فرض وجود ندارد.
  • پارامتر چهارم dbname نام پایگاه داده ای ست که بعد از "اتصال موفق" درخواست های مورد نظر را به آن ارسال میکنیم . 

در این مثال فرض کنید پایگاه داده ای به نام school در mysql با نام کاربری root و کلمه عبور 1234 موجود است. برای اتصال به شکل زیر عمل می کنیم : 

mysqli_connect('localhost', 'root', '1234', 'school');

تابع mysqli_connect_errno 

در صورتی که مشکل یا خطایی هنگام اتصال به پایگاه داده رخ دهد این تابع کد خطا ( error number ) آن را اعلام می کند.
اگر اتصال موفقیت آمیز باشد این تابع عدد 0 و در غیر این صورت کد خطا را بر می گرداند. 

mysqli_connect_errno();

تابع mysqli_connect_error 

در صورتی که اتصال شما به پایگاه داده mysql دارای خطا باشداین تابع رشته ای به عنوان توضیحی در مورد آن خطا بر می گرداند. 
شکلی کلی استفاده از تابع ذکر شده در بالا به این صورت می شود. 

<?php
$con = mysqli_connect('localhost', 'root', '1234', 'school');
If(mysqli_connect_errno()) {
echo " There is an error in mysql :  " . mysqli_connect_error();
}

تابع mysqli_query

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

mysqli_query(connection,query,resultmode);

همان طور که می بینید این تابع در کل 3 پارامتر می گیرد که دو پارامتر اول که اجباری هستند شامل اتصال به دیتابیس و کوئری مورد نظر است و پارامتر سوم که اختیاری است و در مباحث آینده توضیح خواهیم داد.

در مثلا بالا جهت درخواست SELECT به جدول student در پایگاه داده school به شکل زیر عمل می کنیم: 

<?php
$con = mysqli_connect('localhost', 'root', '1234', 'school');
If(mysqli_connect_errno( )) {
echo " There is an error in mysql :  " . mysqli_connect_error();
}
$query = "SELECT * FROM student";
$result = mysqli_query($con,$query);

نمایش اطلاعات جدول با mysqli_fetch_array

تابع mysqli_fetch_array سطر یا سطرهایی از جدول را به صورت آرایه برمی گرداند.
شکل کلی این تابع به صورت زیر است :

mysqli_fetch_array(result,resulttype);

این تابع 2 پارامتر می گیرد. 
پارامتر اول که اجباری است حاصل اجرای دستورات در mysql توسط سه تابع mysqli_query و mysqli_store_result و mysqli_use_result است.
و پارامتر دوم که اختیار است تعیین کننده نوع آرایه است که می تواند انجمنی ، عددی یا هر دو باشد و مقدارهای زیر را می گیرد : 

  • MYSQLI_ASSOC
  • MYSQLI_NUM
  • MYSQLI_BOTH

در مثال بالافرض کنید جدول student دارای دو فیلد id و name می باشد. برای واکشی اطلاعات و نمایش آنها به صورت زیر عمل می کنیم : 

<?php
$con = mysqli_connect('localhost', 'root', '1234', 'school');
If(mysqli_connect_errno( )) {
echo " There is an error in mysql :  " . mysqli_connect_error();
}
$query = "SELECT * FROM student";
$result = mysqli_query($con,$query);
while ($row = mysqli_fetch_array($result)) {
echo 'id = ' . $row['id']  .  '<br> ';
echo 'name = ' . $row['name']  .  '<br> ';
}
?>

تابع mysqli_fetch_assoc

این تابع مانند تابع mysqli_fetch_array عمل می کند با این تفاوت که نتیجه درخواست به mysql را به صورت آرایه فقط انجمنی برمی گرداند.
شکل کلی این تابع به شرح زیر است : 

mysqli_fetch_assoc(result);

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

تابع mysqli_close

از این تابع برای بستن ارتباط جاری با mysql استفاده می شود. یک از نکات امنیتی که ضریب امنیت شما را بالا میبرد بستن ارتباط با پایگاه داد در اولین فرصت می باشد. 
شکل کلی این تابع به شکل زیر است : 

mysqli_close(connection) ;

این تابع تنها یک پارامتر اجباری می گیرد که همان اتصال انجام شده به پایگاه داده است . 
 

<?php
$con = mysqli_connect('localhost', 'root', '1234', 'school');
If(mysqli_connect_errno( )) {
echo " There is an error in mysql :  " . mysqli_connect_error();
}
$query = "SELECT * FROM student";
$result = mysqli_query($con,$query);
while ($row = mysqli_fetch_array($result)) {
echo 'id = ' . $row['id']  .  '<br> ';
echo 'name = ' . $row['name']  .  '<br> ';
}
mysqli_close($con);
?>

 

کلمات کلیدی

علیرضا حاتمی نیا
طراح و برنامه نویس وب
طراحی وبسایت های واکنش گرا
طراحی و پیاده سازی سیستم مدیریت محتوا
سئو و بهینه سازی سایت