Advertisement
  1. Code
  2. Coding Fundamentals
  3. Databases & SQL

عملیات های (ساختن, خواندن, بروزرسانی کردن و حذف کردن) در دیتابیس MySQL توسط PHP

Scroll to top
Read Time: 11 min

() translation by (you can also view the original English article)

در این مقاله, به موضوع اینکه شما چطور می توانید دیتابیس MySQL را برای انجام عملیات های CRUD (ساختن, خواندن, بروزرسانی کردن و حذف کردن) توسط PHP استفاده کنید. اگر می خواهید خود را درگیر اتصال به دیتابیس در PHP کنید, این مقاله یک نقطه شروع عالی برای شما است.

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

در این مقاله, ما سعی کردیم همه چیز را ساده نگهداریم و به شما نشان دهیم که چطور از توابع هسته mysqli استفاده کنید. در مقاله های آینده از این سری, ما به شما راه های بیشتری برای مدیریت اتصال به دیتابیس را نشان میدهیم.

امروز, ما اتصال ساده دیتابیس به PHP را فرا میگیریم, و ما از دیتابیس MySQL به عنوان دیتابیس بک اند استفاده میکنیم. اجازه بدید یک نگاه اجمالی به مباحث این مقاله داشته باشیم:

  • نحوه تشکیل یک اتصال با دیتابیس
  • نحوه انتخاب یک دیتابیس
  • نحوه وارد کردن و بروز رسانی رکورد ها
  • نحوه جمع آوری (واکشی) رکورد ها
  • نحوه حذف رکورد ها

من فرض میکنم که شما یک نسخه از PHP و MySQL که کار میکنند را نصب کرده اید و شما از سطح مبتدی کار با MySQL مطلع هستید. همچنین, شما نیاز دارید که از فعال بودن افزونه mysqli در PHP اطمینان حاصل کنید. چون که ما از آن برای انجام عملیات های دیتابیس در MySQL دیتابیس استفاده می کنیم.

اگر از فعال بودن افزونه mysqli مطمئن نیستید, می توانید از طریق تابع ()phpinfo آن را بررسی کنید. در خروجی ()phpinfo, شما باید بررسی که کنید که بخشی با نام mysqli وجود دارد یا نه. و همچنین باید عبارت Mysqli Support | enabled را در صورتی که افزونه mysqli فعال باشد مشاهده کنید.

همچنین یک راه ساده دیگر برای بررسی این موضوع استفاده از رابط CLI است. شما می توانید دستور زیر را برای نمایش لیست افزونه های فعال در PHP اجرا کنید.

1
$php -m

این دستور یک لیست از افزونه های فعال را چاپ میکند, و اگر شامل کلیدواژه mysqli باشد به معنی فعال بودن افزونه mysqli است.

حالا که ما آن را برپا کردیم, اجازه بدید شروع به ساخت اتصال دیتابیس کنیم.

نحوه برپا کردن یک اتصال دیتابیس

در این بخش, ما در مورد چگونگی برقرار کردن یک اتصال دیتابیس توسط افزونه mysqli گفتگو میکنیم.

اینجا 2 راه برای استفاده از افزونه mysqli وجود دارد, رویه ای و شی گرایی, اما ما از روش رویه ای برای ساده تر شدن محتوا در این مقاله استفاده میکنیم. اگر شما در مورد نحوه شی گرایی کنجکاو هستید, سوال خودتان را در بخش نظرات بپرسید و من از پاسخ دادن به سوال های شما خوشحال می شوم.

در ابتدا, اجازه بدید با دستور تابع mysqli_connect آشنا شویم, این دستور برای برپا کردن یک اتصال با دیتابیس MySQL استفاده می شود.

1
<?php
2
$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}", "{MYSQL_DATABASE}");
3
?>

تابع mysqli_connect چهار مقدار را می گیرد و شی اتصال را در صورت موفق بودن اتصال بر میگرداند. اجازه بدید این مقادیر را توضیح دهیم:

  • MYSQL_HOSTNAME : این مقدار باید با آدرس سرور و یا آی پی سرور جایگزین شود. اگر شما از سرور لوکال بر روی سیستم خود استفاده میکنید, شما میتوانید از یکی از این دو آدرس localhost یا 127.0.0.1 به عنوان آدرس سرور استفاده کنید.
  • MYSQL_USERNAME : نام کاربری دیتابیس MySQL شما.
  • MYSQL_PASSWORD : گذرواژه دیتابیس MySQL شما.
  • MYSQL_DATABASE : نام دیتابیسی که می خواهید به آن متصل شوید.

به محض موفقیت بودن اتصال, connection_obj$ شامل شی اتصال میشود. با این, شما آماده اجرا کوئری های دیتابیس که توسط مقدار MYSQL_DATABASE ارائه شده هستید.

در طرف دیگر ماجرا, اگر اتصال موفق آمیز نباشد, ما می توانیم مشکل را توسط قطه کد زیر پیدا و دیباگ کنیم:

1
<?php
2
$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}", "{MYSQL_DATABASE}");
3
4
if (!$connection_obj) {
5
    echo "Error No: " . mysqli_connect_errno();
6
    echo "Error Description: " . mysqli_connect_error();
7
    exit;
8
}
9
?>

در بخش بعدی, ما می بینیم که شما چگونه یک دیتابیس خاص را توسط شی اتصال انتخاب می کنید.

نحوه انتخاب یک دیتابیس

در بخش قبلی, ما توضیح دادیم که چطور اتصال به یک دیتابیس را با استقاده از تابع mysqli_connect برقرار کنیم. در این بخش, ما نگاهی به نحوه انتخاب دیتابیس بعد از موفقیت آمیز بودن اتصال دیتابیس می اندازیم.

البته, ما قبلا دیدیم که شما همیشه می توانید به دیتابیس با چهار مقدار توسط خود تابع mysqli_connect متصل شوید. اما در اینجا یک راه دیگر نیز برای مواقعی که بعد از اتصال به سرور MySQL قصد عوض کردن دیتابیس را داشته باشید وجود دارد. شما می توانید از تابع mysqli_select_db برای انتخاب دیتابیس و کار بر روی آن استفاده کنید.

اجازه بدید مثال مورد بحث قرار گرفته شده در بخش قبلی را اصلاح کنیم تا ببینیم چظور کار می کند.

1
<?php
2
$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}");
3
4
if (!$connection_obj) {
5
    echo "Error No: " . mysqli_connect_errno();
6
    echo "Error Description: " . mysqli_connect_error();
7
    exit;
8
}
9
10
mysqli_select_db($connection_obj, "{MYSQL_DATABASE}");
11
?>

همانطور که می بینید, ما فقط سه مقدار را توسط تابع mysqli_connect ارسال کردیم, و این تابع به ما یک اتصال دیتابیس موفق می دهد. ما به جای ارسال چهار مقدار به دیتابیس, برای انتخاب نام دیتابیس از تابع mysqli_select_db استفاده کردیم.

تابع mysqli_select_db دو مقدار می گیرد: یکی شی اتصال به دیتابیس و دومی نام دیتابیسی که میخواهید انتخاب کنید.

نحوه ساخت (وارد کردن) و به روز رسانی رکورد ها

در بخش قبلی, ما در مورد نحوه برپایی اتصال MySQL  و انتخاب دیتابیس برای کار بر روی آن بحث کردیم. حالا, ما نحوه اجرا کردن مدل های مختلف کوئری در دیتابیس انتخاب شده را فرا می گیریم. ابتدا, ما فرا می گیریم که چگونه رکوردی به دیتابیس اضافه کنیم و یا رکوردی را به روزرسانی کنیم.

اگر شما می خواهید مثال های بحث شده در این مقاله را دنبال و بهتر درک کنید, باید جدول MySQL که در زیر آمده را در دیتابیس خود درست کنید. این جدولی است که ما از این به بعد در تمام مثال ها استفاده می کنیم.

1
CREATE TABLE `employee` (
2
  `id` int(11) NOT NULL AUTO_INCREMENT,
3
  `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
4
  `email` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
5
  `phone` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
6
  PRIMARY KEY (`id`)
7
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

 اجرا شدن دستور بالا در دیتابیس MySQL شما منجر به ساخت جدولی به نام employee می شود.

نحوه ساخت رکورد

برای ساده نگه داشتن مطلب, ما مقدار هایی که نیاز بود به جدول employee اضافه کنید را در ابتدای دستور بالا قرار دادیم. با این حال, در بیشتر مواقع, این مقادیر از طرف کاربران ارسال می شود. که مقادیر توسط یک فرم ارسال می شود و در پی اچ پی با دستور POST_$ قابل دریافت است.

1
<?php
2
$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}", "{MYSQL_DATABASE}");
3
4
if (!$connection_obj) {
5
    echo "Error No: " . mysqli_connect_errno();
6
    echo "Error Description: " . mysqli_connect_error();
7
    exit;
8
}
9
10
// initialize variables for the insert query

11
$name = 'John Smith';
12
$email = 'john.smith@yahoo.com';
13
$phone = '541-754-1234';
14
15
// prepare the insert query

16
$query = "INSERT INTO employee(`name`,`email`, `phone`)

17
VALUES ('". mysqli_real_escape_string($connection_obj, $name) ."','". mysqli_real_escape_string($connection_obj, $email) ."','". mysqli_real_escape_string($connection_obj, $phone) ."')";
18
19
// run the insert query

20
mysqli_query($connection_obj, $query);
21
22
// close the db connection

23
mysqli_close($connection_obj);
24
?>

در اسکریپت بالا, در ابتدا ما متغییر هایی که می خواستیم به دیتابیس ارسال کنیم را مقدار دهی کردیم. در مرحله بعد, کوئری وارد کردن به دیتابیس را آماده کردیم و آن را به متغییر query$ متصل کردیم.

این نکته مهم را به یاد داشته باشید که ما از تابع mysqli_real_escape_string برای فیلتر کردن مقادیری که می خواهیم در کوئری وارد کردن اطلاعات به کار ببریم, استفاده کردیم. شما باید از این تابع زمانی که می خواهید مقادیر دریافت شده از طریق متغییر POST_$ را وارد دیتابیس کنید, استفاده کنید. این تابع باعث می شود شما اطمینان داشته باشید که کاربران سایت شما کدهای مخرب را توسط کوئری وارد دیتابیس نمی کنند.

در آخر, ما کوئری را توسط تابع mysqli_query اجرا می کنیم. تابع mysqli_query برای اجرا کردن کوئری در دیتابیس انتخاب شده و فعال استفاده می شود. برای اتمام کار, ما تابع mysqli_close را برای بستن اتصال فعال دیتابیس استفاده میکنیم.

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

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

فرض میکنیم که رکورد در جدول employee وجود دارد, و شناسه رکورد 1 است. در این مثال, ما رکوردی که مقدار 1 را به عنوان شناسه خود دارد به روز رسانی مکنیم.

1
<?php
2
$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}", "{MYSQL_DATABASE}");
3
4
if (!$connection_obj) {
5
    echo "Error No: " . mysqli_connect_errno();
6
    echo "Error Description: " . mysqli_connect_error();
7
    exit;
8
}
9
10
// initialize variables for the insert query

11
$id = 1;
12
$phone = '333-555-4444';
13
14
// prepare the insert query

15
$query = "UPDATE employee SET `phone` = '". mysqli_real_escape_string($connection_obj, $phone) ."' WHERE `id` = '". (int) $id ."'";
16
17
// run the insert query

18
mysqli_query($connection_obj, $query);
19
20
// close the db connection

21
mysqli_close($connection_obj);
22
?>

همانطور که در مثال بالا مشاهده میکنید, ما میخواهیم مقدار ستون phone را در جدول employee که رکورد مورد نظر مقدار 1 را در ستون id دارد به روز رسانی کنیم. این کوئری خیلی شبیه به کوئری وارد کردن اطلاعات به دیتابیس است, و ما به جای INSERT از کلمه کلیدی UPDATE استفاده می کنیم.

نحوه دریافت اطلاعات رکورد ها

تا به اینجا, ما توضیح دادیم که چگونه رکورد های مورد نظر خود را به جدول MySQL وارد کنید یا به روزرسانی کنید. در این بخش, ما یاد میگیریم که چطور رکوردها را از جدول MySQL دریافت کنیم (واکشی کنیم).

نگاهی به مثال زیر کنید.

1
<?php
2
$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}", "{MYSQL_DATABASE}");
3
4
if (!$connection_obj) {
5
    echo "Error No: " . mysqli_connect_errno();
6
    echo "Error Description: " . mysqli_connect_error();
7
    exit;
8
}
9
10
// prepare the select query

11
$query = "SELECT * FROM employee";
12
13
// execute the select query

14
$result = mysqli_query($connection_obj, $query) or die(mysqli_error($connection_obj));
15
16
// run the select query

17
while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
18
    echo "ID:" . $row['id'] . "<br/>";
19
    echo "Name:" . $row['name'] . "<br/>";
20
    echo "Phone:" . $row['phone'] . "<br/>";
21
    echo "Email:" . $row['email'] . "<br/>";
22
    echo "<br/>";
23
}
24
25
// close the db connection

26
mysqli_close($connection_obj);
27
?>

اولین کاری که شما نیاز دارید برای واکشی رکوردها از دیتابیس انجام دهید این است که کوئری select (انتخاب) را توسط تابع mysqli_query اجرا کنید. بعد از موفقیت آمیز بودن اجرا کوئری select , تابع mysqli_query آبجکت mysqli result را برمیگرداند, و این چیزی است که ما در متغییر result$ قرار می دهیم.

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

تابع mysqli_fetch_array دو مقدار ورودی را می گیرد: آبجکت نتیجه و نوع نتیجه. نوع نتیجه نشان می دهد که تابع mysqli_fetch_array چه نوع از آرایه ای را بازگرداند. نوع آرایه ها به این فرم ها می توانند باشند, عددی, وابسته, یا هر دو. این مقدار به صورت اختیاری می باشد, و شما می توانید از یکی از مقدار های روبرو استفاده کنید: MYSQLI_ASSOCMYSQLI_NUM, یا MYSQLI_BOTH مقدار MYSQLI_ASSOC نشانگر این است که شما می خواهید به ستون های دیتابیس از طریق نام آنها دسترسی داشته باشید, و مقدار MYSQLI_NUM نشانگر این است که شما می خواهید به ستون های دیتابیس از طریق شماره ستون دسترسی داشته باشید.

اگر شما MYSQLI_NUM را به عنوان مقدار دوم تابع mysqli_fetch_array ارسال کنید, شما می توانید به ستون ها به این صورت دسترسی داشته باشید [row[0 و [row[1 , و... تا آخرین شماره ستون. در این کد, ما مقدار MYSQLI_BOTH را ارسال کردیم, بنابراین ما می توانیم به هر دو روش به ستون های جدول  دسترسی داشته باشیم. اگر فقط مایلید که به مقادیر ستون ها به صورت وابسته دسترسی داشته باشید, شما می توانید از تابع mysqli_fetch_assoc استفاده کنید.

در بخش بعدی که بخش پایانی است, ما یاد میگیریم که چطور رکورد مورد نظر را از دیتابیس حذف کنیم.

نحوه حذف رکورد ها

در این بخش, ما یاد میگیریم که چطور رکورد های مورد نظر را از یک دیتابیس حذف کنیم.

به مثالی که در ادامه آمده نگاه کنید.

1
<?php
2
$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}", "{MYSQL_DATABASE}");
3
4
if (!$connection_obj) {
5
    echo "Error No: " . mysqli_connect_errno();
6
    echo "Error Description: " . mysqli_connect_error();
7
    exit;
8
}
9
10
// initialize variables for the delete query

11
$id = 1;
12
13
// prepare the insert query

14
$query = "DELETE FROM employee WHERE `id` = '". (int) $id ."'";
15
16
// run the delete query

17
mysqli_query($connection_obj, $query);
18
19
// close the db connection

20
mysqli_close($connection_obj);
21
?>

همانطور که می بینید, این کوئری بسیار شبیه به کوئری وارد کردن و به روز رسانی است. تابع mysqli_query کوئری DELETE را اجرا میکند, و سرانجام رکورد مورد نظر را از جدول employee حذف می کند.

نتیجه

در این مقاله, ما فراگرفتیم که چگونه می توانیم توسط پی اچ پی از دیتابیس MySQL استفاده کنیم. این مقاله در نظر گرفته شده تا دانش بنیادی, اتصال به دیتابیس MySQL در پی اچ پی را برای مبتدی ها فراهم کند. ما یاد گرفتیم که چطور اتصال یک دیتابیس را برای اجرا کوئری های مختلف تنظیم کنیم.

لطفا بازخورد خود را برای ما ارسال کنید و مشکلات خود را در اینجا مطرح کنید.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.