برای ذخیره یا دسترسی به داده‌های داخل پایگاه داده MySQL، ابتدا باید به سرور پایگاه داده MySQL متصل شوید. PHP دو روش مختلف برای اتصال به سرور MySQL ارائه می دهد: اکستنشن MySQLi (MySQL بهبود یافته) و استفاده از توابع mysqli و راه دوم، PDO (اشیا Data داده های PHP). در حالی که اکستنشن PDO قابل حمل‌تر و منعطف‌تر است و از بیش از دوازده پایگاه داده مختلف پشتیبانی می‌کند، اکستنشن MySQLi همانطور که از نامش پیداست فقط از پایگاه داده MySQL پشتیبانی می‌کند.
با این وجود توابع mysqli راهی آسان‌تر برای اتصال به سرور پایگاه داده MySQL و اجرای آن  است. هر دو PDO و MySQLi یک API شی گرا ارائه می‌دهند، اما MySQLi همچنین یک API رویه‌ای ارائه می‌دهد که درک آن برای مبتدیان نسبتاً آسان است. ما قبلا در مقاله‌ای جداگانه نحوه اتصال به دیتابیس در Php با PDO را به شما آموزش داده بودیم. اکنون قصد داریم تا در ادامه به شما روش استفاده از mysqli و توابع mysqli را آموزش دهیم. با ما همراه باشید.

اتصال به دیتابیس با mysqli (با استفاده از توابع mysqli)

در PHP به راحتی قادر خواهید بود تا اتصال به پایگاه داده را با استفاده از تابع () mysqli_connect برقرار کنید. تمام ارتباطات بین PHP و سرور پایگاه داده MySQL به این صورت انجام می‌شود. درادامه سینتکس‌های پایه برای اتصال به MySQL با استفاده از اکستنشن MySQLi آورده شده است. بنابراین برای اتصال به دیتابیس با mysqli مراحل زیر را دنبال کنید:

syntax: MySQLi, Procedural way

$link = mysqli_connect("hostname", "username", "password", "database");

Syntax: MySQLi, Object Oriented way

$mysqli = new mysqli("hostname", "username", "password", "database");

پارامتر HOSTNAME در قطعه کد بالا، نام میزبان  یا آدرس IP سرور MySQL را نشان داده و به این صورت این موارد را مشخص خواهد کرد.

در ادامه قطعه کدی آماده شده که نحوه اتصال به سرور پایگاه داده MySQL با استفاده از MySQLi را با دو روش ساختاری و شی‌گرا نشان خواهد داد.

syntax: MySQLi, Procedural way

<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "root", "");
 
// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
 
// Print host information
echo "Connect Successfully. Host info: " . mysqli_get_host_info($link);
?>

Syntax: MySQLi, Object Oriented way

<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
// Check connection
if($mysqli === false){
    die("ERROR: Could not connect. " . $mysqli->connect_error);
}
 
// Print host information
echo "Connect Successfully. Host info: " . $mysqli->host_info;
?>

توجه: یوزرنیم به صورت پیش فرض روت بوده  و پسوورد به صورت پیش فرض انتخاب نشده و شما باید اینکار را انجام داداه و مرز عبور مورد نظر خود را وارد نمایید.

بستن اتصال سرور پایگاه داده mysql

پس از اینکه اسکریپت به پایان اجرا برسد، اتصال به سرور نیز پایان خواهد یافت. برای قطع اتصال به پایگاه داده قبل از تمام شدن اجرای اسکریپت از فراخوانی تابع PHP mysqli_close () از توابع mysqli استفاده کنید.

syntax: MySQLi, Procedural way

<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "root", "");
 
// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
 
// Print host information
echo "Connect Successfully. Host info: " . mysqli_get_host_info($link);
 
// Close connection
mysqli_close($link);
?>

Syntax: MySQLi, Object Oriented way

<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
// Check connection
if($mysqli === false){
    die("ERROR: Could not connect. " . $mysqli->connect_error);
}
 
// Print host information
echo "Connect Successfully. Host info: " . $mysqli->host_info;
 
// Close connection
$mysqli->close();
?>

معرفی توابع mysqli

عملکرد PHP mysqli_select_db

از تابع mysqli_select_db برای انتخاب پایگاه داده مورد نظر استفاده می‌شود.

سینتکس زیر نحوه استفاده از این تابع در اکستنشن MySQLi را نشان می‌دهد

<?php
mysqli_select_db($db_handle,$database_name);
?>

که شامل پارامترهای زیر است:

“mysqli_select_db ()” با خروجی درست یا نا درست انتخاب پایگاه داده را بر می‌گرداند.

“$ database_name” این پارامتر شامل نام پایگاه داده است

“$ link_identifier” این پارامتر اختیاری بوده و از آن برای استفاده از لینک سرور بهره می‌گیریم.

دستور mysqli_query

از دستور mysqli_query برای اجرای نمایش داده‌های SQL استفاده می‌شود

این تابع یکی از مهم‌ترین توابع mysqli بوده و می‌توان از آن برای اجرای انواع جستجوی زیر استفاده کرد:

قرار دادن مقدار جدید در پایگاه داده

انتخاب یک آیتم

به روز رسانی آیتم‌های موجود

حذف یک یا چند آیتم

این تابع شامل سینتکس زیر می‌شود:

<?php
mysqli_query($db_handle,$query) ;
?>

که شامل پارامترهای زیر است:

“mysqli_query ()” تابعی است که کوئری SQL را اجرا می‌کند.

“$ query” عبارت SQL مورد نظر برای اجرا است.

“$ link_identifier” این پارامتر اختیاری بوده و می‌توان از آن برای عبور در پیوند اتصال سرور استفاده کرد.

تابع PHP mysqli_num_rows

برای اینکه بتوانیم تعاد ردیف‌های برگشتی از یک درخواست را بدست آوریم از این تابع استفاده می‌کنیم که سینتکس زیر را دارد.

<?php
mysqli_num_rows($result);
?>

که شامل پارامترهای زیر است:

“mysqli_num_rows ()” تابع شمارش سطر بوده و با فراخوانی آن تعداد سطرهای برگشتی از یک کوئری را بدست می‌آوریم

“$ result” مجموعه نتایج mysqli_query است.

تابع PHP mysqli_fetch_array

تابع mysqli_fetch_array برای فچ کردن آرایه‌ها از مجموعه نتایج کوئری استفاده می‌شود و سینتکس زیر را دارد.

<?php
mysqli_fetch_array($result);
?>

که شامل پارامترهای زیر است:

“mysqli_fetch_array ()” تابع برای واکشی است که آرایه ها را بر می‌گراند.

“$ result” همانطور که از نام این پارامتر مشخص است، نتایج بدست آمده توسط تابع mysqli_query است.

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

درج، بروزرسانی و حذف رکوردها با استفاده از توابع mysqli

ابتدا با استفاده از ابزار دسترسی مورد علاقه خود مانند MySQL ،phpMyAdmin و غیره به MySQL متصل شوید و سپس یک پایگاه داده به نام my_person_contacts ایجاد کنید.

اسکریپت نشان داده شده در زیر را برای ایجاد جدول و درج برخی از داده‌های ساختگی اجرا کنید.

<?php
CREATE TABLE IF NOT EXISTS `my_contacts` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `full_names` varchar(255) NOT NULL,

  `gender` varchar(6) NOT NULL,

  `contact_no` varchar(75) NOT NULL,

  `email` varchar(255) NOT NULL,

  `city` varchar(255) NOT NULL,

  `country` varchar(255) NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

INSERT INTO `my_contacts` (`id`, `full_names`, `gender`, `contact_no`, `email`, `city`, `country`) VALUES

(۱, 'Zeus', 'Male', '111', 'zeus @ olympus . mt . co', 'Agos', 'Greece'),

(۲, 'Anthena', 'Female', '123', 'anthena @ olympus . mt . co', 'Athens', 'Greece'),

(۳, 'Jupiter', 'Male', '783', 'jupiter @ planet . pt . co', 'Rome', 'Italy'),

(۴, 'Venus', 'Female', '987', 'venus @ planet . pt . co', 'Mars', 'Italy');
?>

اکنون ما یک پایگاه داده تنظیم کرده‌ایم و قصد داریم با استفاده از توابع mysqli روی آن پردازش مورد نظر خود را انجام دهیم.

اکنون قصد داریم از قطعه کدی استفاده کنیم که رکوردها را از پایگاه داده چاپ می‌کند.

<?php 
	$dbh = mysqli_connect('localhost', 'root', 'melody'); 
	//connect to MySQL server if (!$dbh)     
    
	die("Unable to connect to MySQL: " . mysqli_error());
    
	//if connection failed output error message 
    if (!mysqli_select_db($dbh,'my_personal_contacts'))     
    
	die("Unable to select database: " . mysqli_error()); 
    //if selection fails output error message 
    
	$sql_stmt = "SELECT * FROM my_contacts"; 
    //SQL select query 
    
     $result = mysqli_query($dbh,$sql_stmt);
     //execute SQL statement 
     
	if (!$result)     
		die("Database access failed: " . mysqli_error()); 
    	//output error message if query execution failed 
        
		$rows = mysqli_num_rows($result); 
   		// get number of rows returned 
    
	if ($rows) {     
    
	while ($row = mysqli_fetch_array($result)) {         
		echo 'ID: ' . $row['id'] . '<br>';         
		echo 'Full Names: ' . $row['full_names'] . '<br>';        
		echo 'Gender: ' . $row['gender'] . '<br>';         
		echo 'Contact No: ' . $row['contact_no'] . '<br>';         
		echo 'Email: ' . $row['email'] . '<br>';         
		echo 'City: ' . $row['city'] . '<br>';         
		echo 'Country: ' . $row['country'] . '<br><br>';     
	} 
} 
mysqli_close($dbh); //close the database connection 
?>

اجرای قطعه کد نشان داده شده نتایج زیر را برمی‌گرداند.

نمایش خروجی توابع mysqli
نمایش خروجی توابع mysqli

درج رکوردهای جدید

در این مرحله قصد داریم کدی را به شما نشان دهیم که رکورد جدیدی را به جدول ما اضافه می‌کند.

<?php 
	$dbh = mysqli_connect('localhost', 'root', 'melody'); 
	//connect to MySQL server if (!$dbh)     
    
	die("Unable to connect to MySQL: " . mysqli_error()); 
	//if connection failed output error message 
    
	if (!mysqli_select_db($dbh,'my_personal_contacts'))     
	die("Unable to select database: " . mysql_error()); 
	//if selection fails output error message 
    
	$sql_stmt = "INSERT INTO `my_contacts` (`full_names`,`gender`,`contact_no`,`email`,`city`,`country`)"; 
	$sql_stmt .= " VALUES('Poseidon','Mail','541',' poseidon @ sea . oc ','Troy','Ithaca')"; 
    
	$result = mysqli_query($dbh,$sql_stmt); //execute SQL statement 
    
	if (!$result)     
		die("Adding record failed: " . mysqli_error()); 
		//output error message if query execution failed echo "Poseidon has been successfully added to your contacts list";
        
 mysqli_close($dbh); //close the database connection 
?>

کد را اجرا کنید و دوباره به مثال جستجوی آیتم  مورد نظر برگردید و مخاطبین خود را همانند مثال قبلی بازیابی نمایید، پس از اجرا باید مخاطب جدید در پایگاه داده شما ثبت شده باشد، ببینید آیا پوزیدون به لیست شما اضافه شده است یا خیر.

به روزرسانی رکوردها

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

<?php 
	$dbh = mysqli_connect('localhost', 'root', 'melody'); 
	//connect to MySQL server 
    
	if (!$dbh)    
	die("Unable to connect to MySQL: " . mysqli_error()); 
    //if connection failed output error message 
    
	if (!mysqli_select_db($dbh,'my_personal_contacts'))     
	die("Unable to select database: " . mysql_error()); 
	//if selection fails output error message 
    
	$sql_stmt = "UPDATE `my_contacts` SET `contact_no` = '785',`email` = ' poseidon @ ocean . oc ';
	//SQL select query $sql_stmt .= " WHERE `id` = 5"; 
    
	$result = mysqli_query($dbh,$sql_stmt); 
	//execute SQL statement if (!$result)     
    
	die("Deleting record failed: " . mysqli_error()); 
	//output error message if query execution failed 
    
	echo "ID number 5 has been successfully updated"; 
mysqli_close($dbh); //close the database connection 
?>

حذف رکوردها

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

<?php 
	$dbh = mysqli_connect('localhost', 'root', 'melody'); 
	//connect to MySQL server
    
	if (!$dbh)     
	die("Unable to connect to MySQL: " . mysqli_error()); 
	//if connection failed output error message 
    
	if (!mysqli_select_db($dbh,'my_personal_contacts'))     
	die("Unable to select database: " . mysqli_error()); 
	//if selection failes output error message $id = 4; 
	//Venus's ID in the database 
    
	$sql_stmt = "DELETE FROM `my_contacts` WHERE `id` = $id"; 
	//SQL Delete query 
    
	$result = mysqli_query($dbh,$sql_stmt); 
	//execute SQL statement 
    
	if (!$result)     
	die("Deleting record failed: " . mysqli_error());
	//output error message if query execution failed 
    
	echo "ID number $id has been successfully deleted"; 
mysqli_close($dbh); //close the database connection 
?>

به این ترتیب به راحتی می‌توانید رکورد مورد نظر را حذف نمایید، برای اینکه تغییرات را مشاهده کنید به قسمت‌های قبل برگردید و کد مربوط به نمایش رکوردها را اجرا نمایید.

پایگاه داده و توابع mysqli

برای اتصال به بانک داده‌های mysql با استفاده از php دو روش وجود دارد: pdo و mysqli. روش اتصال به دیتابیس با mysqli هم عملی و هم شیءگراست. در نتیجه ما در این مقاله سعی کردیم اکستنشن MySQLi و تمام توابع مهم آن از جمله دستور mysqli_query و توابع مورد نیاز برای پردازش‌های مورد نیاز بر روی رکوردهای موجود در پایگاه داده را به شما آموزش دهیم، امیدواریم این آموزش برای شما سودمند بوده باشد.