شنبه ۲۲ شهریور ۱۴۰۴

Saturday, September 13, 2025 GMT +3:30
دسته بندی
×

اتصال PHP به MySQL با اکستنشن MySQLi

mysql

در مطلب گذشته از بخش آموزش مقدماتی MySQL با کلیاتی از پرکاربردترین سیستم مدیریت پایگاه داده آشنا شدیم، گفتیم که به طور معمول پایگاه داده MySQL را با دو روش می توانیم مدیریت کنیم، روش اول استفاده از رابط کاربری برنامه phpMyAdmin و به صورت دستی است که در این خصوص توضیحات مختصری ارائه شد، روش دوم که هدف اصلی ما در این سری از آموزش ها است، ارتباط و مدیریت پایگاه داده MySQL با برنامه نویسی PHP است که بدین منظور در کنار کدهای PHP از برنامه های نرم افزاری کوچکی تحت عنوان اکستنشن در مفسر این زبان باید بهره بگیریم، اکستنش های ارتباط با MySQL در PHP سه مورد هستند، MySQL، MySQLi و PDO که به جهت قدیمی و منسوخ شدن MySQL از توضیح آن صرف نظر می کنیم، اکستنشن PDO نیز به جهت ماهیت کاربرد چندگانه آن در جای خود آموزش داده خواهد شد، در مباحث این بخش از اکستنشن MySQLi (نسخه بهبود یافته اکستنشن MySQL، حرف i به معنی improved) که به طور اختصاصی برای ارتباط PHP با MySQL طراحی شده است به روش برنامه نویسی رویه ای (Procedural) و شی گرا (Object-oriented) استفاده می کنیم.

اتصال به دیتابیس در اکستنشن MySQLi


برای اتصال به دیتابیس قبل از هرچیز باید پایگاه داده ساخته باشیم، برای انجام این کار می توانیم از برنامه phpMyAdmin وارد سربرگ Databases شده و در فیلد "Create database" نام پایگاه داده مد نظر خود را وارد، از قسمت Collation گزینه utf8_persian_ci را انتخاب و در نهایت بر روی دکمه "create" کلیک نمائیم.
نکته: عمدتا در لوکال می توانیم به صورت پیش فرض با نام کاربری root و بدون پسورد از دیتابیس استفاده کنیم اما در سرور اصلی معمولا باید ابتدا یک نام کاربری با کلمه عبور ساخته و آن را برای استفاده از پایگاه داده مد نظر تنظیم نمائیم، این موارد از طریق برنامه های مدیریت هاست مانند DirectAdmin ،cPanel و... قابل انجام است، به طور مثال در cPanel از قسمت Databases گزینه MySQL Databases با امکاناتی نظیر Create New Database، MySQL Users، Add New User، Add User To Database و... می توانیم دیتابیس و کاربر ساخته و در نهایت کاربر را به دیتابیس اختصاص دهیم (اجازه استفاده از دیتابیس را به کاربر مد نظر بدهیم).
پس از ایجاد دیتابیس از طریق واسط کاربری برنامه phpMyAdmin، به طور معمول نخستین گام در برنامه های تحت وب برقراری اتصال بین کدهای PHP و سیستم مدیریت پایگاه داده MySQL است، در ادامه خواهیم دید چگونه با استفاده از دستورات اکستنشن MySQLi در PHP می توانیم به دیتابیس MySQL متصل شویم، در نمونه کدهای زیر این کار انجام شده است.
برنامه نویسی رویه ای (Procedural):
<?php
//اتصال به دیتابیس
$conn = mysqli_connect("localhost", "username", "password", "dbname");
if(!$conn) {
    echo "PHP & MySQL Connection: Error! " . mysqli_connect_errno() . ' - ' . mysqli_connect_error();
    exit;
} else {
    echo "PHP & MySQL Connection: Ok!<br>";
}
//پایان اتصال
mysqli_close($conn);
?>
برنامه نویسی شی گرا (Object-oriented):
<?php
//اتصال به دیتابیس
$conn = new mysqli("localhost", "username", "password", "dbname");
if(!$conn) {
    echo "PHP & MySQL Connection: Error! " . $conn->errno . ' - ' . $conn->error;
    exit;
} else {
    echo "PHP & MySQL Connection: Ok!<br>";
}
//پایان اتصال
$conn->close();
?>
در شرح نمونه کد بالا ابتدا اطلاعات پایگاه داده خود را که قبلا ساخته ایم در مقادیر مشخص شده وارد می کنیم، به جای username نام کاربری پایگاه داده، در قسمت password کلمه عبور و در قسمت dbname نام دیتابیسی که ساخته ایم را می نویسیم، به طور مثال در لوکال از نام کاربری root بدون پسورد استفاده می کنیم:
$conn = mysqli_connect("localhost", "root", "", "dbname");

$conn = new mysqli("localhost", "root", "", "dbname");
اگر همه چیز درست باشد با فراخوانی فایل PHP و اجرای دستورات بالا پیام "PHP & MySQL Connection: Ok" را در خروجی خواهیم داشت در غیر این صورت قسمت else اجرا شده و خطای مربوطه نشان داده می شود، نهایتا نیز با تابع mysqli_close (در برنامه نویسی رویه ای) و متد close (در برنامه نویسی شی گرا) به ارتباط پایان می دهیم (در حال حاضر نیازی به درک عمیق دستورات MySQLi نیست، صرف آشنایی ظاهری با نمونه کدها برای این سطح کفایت می کند).
دسته بندی: آموزش مقدماتی » MySQL
related مطالب بیشتر:
انتخاب ردیف ها با دستور SELECT در MySQL
استفاده از WHERE در پرس و جوی MySQL
استفاده از JOIN و ساخت پرس و جوی ترکیبی در MySQL
آموزش MySQL، سیستم مدیریت پایگاه داده
به روز رسانی ردیف ها در MySQL با UPDATE
دیدگاه
more ۳۴ دیدگاه برای این مطلب ارسال شده است.
more چینش دیدگاه ها به ترتیب از جدیدترین به قدیمی ترین است.
ansherli
۱۶:۰۲ ۱۳۹۱/۱۲/۲۸
سلام
ببخشید من متوجه نشدم چطوری با دستور ALTER TABLE کارکنم؟
من دیتابیس و جداولم رو دستی ایجاد کردم
الان چطوری این کد رو بهش اضافه کنم ؟
سلام
برای حالت دستی، در برنامه phpMyAdmin بر روی جدول مربوطه کلیک کنید و در منوهای بالایی، گزینه SQL را انتخاب نمائید، سپس از نمونه دستور زیر استفاده کنید:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8;
روش توضیح داده شده در آموزش مربوط به حالتی است که جداول را با اجرای فایل های PHP می سازید.
web developer
۱۴:۰۶ ۱۳۹۱/۱۲/۲۶
درود
ممنون از آموزش های خوب شما
دوست گرامی
آموزش یو تی اف کردن را در کنار آموزش ساخت فرم ثبت نام انجام می دهم.
زمانی که یو تی اف می کند، تنها تیبل اصلی یو تی اف می شود و ستون های زیر مجموعه را یو تی اف نمی کند.
ممنون می شوم راهنمایی کنید
ابتدا یونیکد دیتابیس را در هنگام ایجاد کردن، بر روی utf8_persian_ci تنظیم کنید، سپس در هنگام ایجاد جداول و در همان صفحه کد، از دستور ALTER TABLE در انتهای دستور CREATE TABLE استفاده کنید (پیش از اینکه اتصال را خاتمه دهید).
مثال:
mysqli_query($conn, "CREATE TABLE tb_name(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
name VARCHAR(255)) ENGINE=MyISAM ")
or die(mysqli_error($conn));
echo "جدول با موفقیت ساخته شد!";

mysqli_query($conn, "ALTER TABLE tb_name
DEFAULT CHARACTER SET utf8
COLLATE utf8_persian_ci;")
or die(mysqli_error($conn));
echo "یونیکد با موفقیت تنظیم شد!";
۲۲:۰۲ ۱۳۹۱/۰۹/۱۹
سلام این کد که کار نمیکنه!...
میگه باید دیتابیس رو سلکت کنیم این کار رو هم که انجام میدم باز نمیشه
از این کد ها استفاده کردم
mysql_select_db("mahdi");
mysql_select_db("mahdi",$con);
con متغیری هست که به mysql کانکت شده
ممنون از یادآوری شما، قسمت mysql_select_db در هنگام منتشر کردن مطلب از قلم افتاده بود، آموزش به طور کامل ویرایش و بر اساس اکستنشن توصیه شده MySQLi تصحیح شد، می توانید از الگوی فعلی استفاده کنید، اگر خطایی دریافت کردید بررسی کنید که دیتابیس را از قبل ساخته و نام آن به درستی درج شده باشد.
نیما
۰۱:۰۳ ۱۳۹۱/۰۹/۱۳
عالی
more لطفا پیش از ارسال دیدگاه نکات زیر را مد نظر داشته باشید:
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.



 refresh
10 × 10
9 × 1
20 × 20
=