مقدمه آموزش نحوه اتصال php به mysql
بدون این که ما متوجه چیزی شویم. اگر پایگاههای دادهای ازقبل طراحی نمیشدند؛ کلا نمیتوانستیم هیچگونه عملیات اینترنتی انجام دهیم. mysql توانائی پشتیبانی پروژهها با هر سایزی را دارد. توانائی mysql در حجم زیادی از دادهها بدون اتلاف وقت و انرژی، یکی از بزرگترین نقاط قوت آن است.
مثلا زمانی پایگاه داده دانشگاههای غیرانتفاعی و کمجمعیت را با پایگاه داده دانشگاه تبریز یا تهران مقایسه کنید؛ خواهیددید که پایگاه داده اطلاعات مربوط به شناسنامه، کارنامه تحصیلی، کارنامه مالی و غیره هر دانشجو را ذخیره کرده و اینکه تعداد دانشجویان یا اساتید چند تا است؛ تاثیری در ذخیرهسازی اطلاعات و نحوه اتصال php به mysql آنها ندارد.
حال اگر شما میخواهید به عنوان یک طراح صفحات وب، وارد عرصه علوم کامپیوتر شوید؛ حتما نیاز خواهید داشت که با نحوه اتصال php به mysql آشنا شوید. پس برای ادامه کارتان، سعی کنید این مقاله را تا پایان مطالعه کرده و آن را به خوبی یاد بگیرید. سپس آموزشهای پیشرفتهتری که در این مقاله معرفی میگردد را به عنوان آموزشهای تکمیلی بررسی کرده و پروژه خود را شروع کنید.
روال انجام کار، شاید در ابتدا کمی پیچیده به نظر برسد ولی این مژده را به شما میدهم که با تمرین و تکرار، میتوانید به قول معروف، سوار کار شوید و در مراحل انجام پروژه تسلط پیدا کنید.
آیا میدانستید که از پایگاه داده، در سایتهای پویا برای ذخیره سازی دادهها استفاده میشود؟ بله! به همین منظور است که اتصال به دیتابیس و کار با آن در اکثر پروژهها موردنیاز است. در php امکان ارتباط با انواع دیتابیسها فراهم است. بهطوریکه یکی از قدیمیترین و پراستفادهترین پایگاه داده mysql میباشد. در این مقاله به نحوه ارتباط با دیتابیس mysql و روش کار با دیتابیس php خواهیم پرداخت.
در تعریف ساده از پایگاه داده میتوان گفت؛ پایگاه داده محلی برای ذخیره و نگهداری دادههای موردنیاز است. دیتابیس mysql پایگاه دادهای جدولی و رابطهای است. بهاین معنا که دیتابیس از جداول ساخته شده و دادهها در این جدولها به شکل یک ردیف ذخیره میشوند. مابین این جداول و ردیفها نیز رابطههایی را میتوان درنظر گرفت.
نحوه کار با دیتابیس mysql در php
در صورت کلی وقتی میخواهیم با یک دیتابیس کار کنیم؛ ابتدا باید به یک سرویسدهنده یا سرور پایگاه داده متصل شویم. هر پایگاه داده واسطی را ارائه میکند که برنامه نویس به وسیله آن توانائی اجرای دستورات را خواهد داشت. دیتابیس mysql به کمک یک زبان ساده به نام sql فرمانهای برنامه نویس را دریافت و اجرا میکند.
در php نسخه ۵ به بالا، برای کار با پایگاه داده mysql می توانید یکی از روشهای زیر را به کار ببرید:
- mysql
- mysqli
- Pdo
در نسخههای قبلی php از افزونه mysql استفاده میشد اما استفاده از این افزونه از ۲۰۱۲ به بعد توصیه نمیشود. به دلیل مسائل امنیتی مانند ترزیق Sql و غیره منسوخ شده است ولی دو مورد دیگر بطور فعال مورد استفاده قرار میگیرند. آیا مایل هستید؛ از mysqli یا Pdo استفاده کرده و مزیت هر یک نسبت به دیگری را بدانیم؟
اگر بخواهیم بررسی مختصری در این مورد داشته و جواب کلی برای مخاطبان ارائه دهیم؛ باید بگوییم که استفاده از mysqli یا Pdo بستگی به انتخاب و نیاز شما دارد و هرکدام از گزینهها mysql و Pdo مزیتهای خودشان را دارند. mysqli تنها با پایگاه داده mysql کار خواهد کرد اما Pdo با ۱۲ پایگاه داده مختلف کار میکند.
اگر زمانی بخواهید به یک پایگاه داده دیگر سوییچ کنید؛ گزینه Pdo کار را راحتتر خواهد کرد و فقط ارتباط یا Connection به پایگاه داده را تغییر خواهید داد و به احتمال زیاد چند تغییر کوچک در کوئریها را خواهید داشت.
هر دو گزینه شیءگرا هستند اما mysqli رویههای Api را نیز ارائه میدهد؛ هر دو گزینه، دستورات آماده برای مقابله با تزریقات Sql یا Sql injection را پشتیبانی میکنند؛ البته این موضوع، برای حفظ امنیت برنامههای کاربردی وب بسیار مهم و حیاتی است.
اکستنشن Pdo که اختصاری برای عبارت «اشیای دادهای php» یا همان php data objects است؛ یک لایه انتزاعی از پایگاه داده است. انواع متفاوتی از سرورهای پایگاه داده را همراه با سرور mysql ارائه میکند. اکستنشن Pdo پرتابل است بنابراین هر وقت بخواهید سرور پایگاه داده را تغییر دهید؛ به سهولت میتوانید این کار را اجرا کنید. از طرف دیگر اکستنشن mysqli خاص سرور mysql است و سرعت و عملکرد بهتری را ارائه میکند. مهمترین مزیت استفاده از Pdo؛ ساده و قابلحمل بودن کد است. برای داشتن ارائهای کاربردی درباره زبان php به فایل موجود در لینک زیر نگاهی بیندازید.
طراحی یک کانکشن mysql
در ادامه آموزش نحوه اتصال php به mysql با اسکریپت php برای طراحی یک کانکشن آشنا خواهیم شد. و از آن برای واکشی خروجی و دستکاری رکوردهای پایگاه داده استفاده خواهیم کرد. اکستنشن mysqli دو روش متفاوت شیءگرا یا رویهای برای اجرای عملیات پایگاه داده در اختیار برنامه نویس قرار میدهد و طراح وب مختار است که از کدام این روشها به اختیار خود استفاده کند.
<?php $mysqli_link = mysqli_connect("{HOST_NAME}", "{DATABASE_USERNAME}", "{DATABASE_PASSWORD}", "{DATABASE_NAME}"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; }
توجه داشته باشید ازPlaceholder هایی برای تابع mysql-connect استفاده کردیم؛ شما بایستی آنها را با مقادیر واقعی تعویض کنید.
- Host-name
این بخش نشاندهنده نشانی Ip است. بهتر است که پس از انجام مراحل نصب در سیتم عامل موردنظر، از هاست محلی ۱۲۷.۰.۰.۱ استفاده شود اما اگر از میزبان بدون نیاز به نصب mysql استفاده شود؛ پیشنهاد میگردد نام میزبان با آدرس Ip از قبل تعیین شده، مورد استفاده قرار گیرد.
- Database-username
در Database-username نام کاربری است که در زمان اتصال به سرور mysql خود مورد استفاده قرار میدهید؛ مقداردهی میگردد.
- Database-password
در فیلد Database-password رمز عبور برای اتصال به سرور mysql همراه با نام کاربری موردنظر مقداردهی میشود.
- Database-name
نام پایگاه داده mysql در فیلد Database-name مقداردهی شده و برای عملیات بعدی مورد استفاده قرار میگیرد.
برای تفهیم کاملتر جایگاه و نحوه استفاده هر کدام از موارد بیانشده، به مثال زیر توجه کنید.
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; }
با اجرای تکه کد بالا، لینک اتصال به پایگاه داده ایجاد شده و به متغییر mysqli_link انتساب داده میشود تا درادامه مراحل، برای اجرای انواع مختلفی از پایگاه داده به کار گرفته شود. تابع mysql_connect_errno برای هرگونه مشکلی که احتمالا در هنگام راه اندازی پیش آید؛ طراحی شده است. بهاینترتیبکه به کمک یک کد خطا، تابع mysql_connect_error شرح خطا را برای کاربر ارائه خواهد داد.
۱- نحوه ایجاد رکورد در MySql
در ادامه آموزش نحوه اتصال php به mysql، نحوه استفاده از شیء اتصال برای اجرای Insert را توضیح میدهیم. اگر تمایل داشته باشید که مثالهای مطرح شده در این مقاله را خودتان نیز اجرا کنید؛ قبل از انجام هرگونه عملیات، ابتدا باید جدول mysql را در پایگاه دادهتان بسازید.
CREATE TABLE `students` ( `id` int(11) NOT NULL AUTO_INCREMENT, `first_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `last_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
روال کار به این صورت است که معمولا جدول mysql با استفاده از ابزار خط فرمان ساخته شده و پارامترهای اتصال مقداردهی میگردد. بهمنظور اینکه پایگاه داده در برابر حملات سایبری قوی عمل کند و شکستناپذیر باشد؛ پیشنهاد میشود از تابع mysqli_real_escape_string در زمینه متغیرهای post_$ استفاده شود. به تکه کد زیر توجه کنید.
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; } $insert_query = "INSERT INTO students(`first_name`,`last_name`,`email`) VALUES ('". mysqli_real_escape_string($mysqli_link, 'John') ."','". mysqli_real_escape_string($mysqli_link, 'Wood') ."','". mysqli_real_escape_string($mysqli_link, 'john.wood@tutsplus.com') ."')"; // run the insert query If (mysqli_query($mysqli_link, $insert_query)) { echo 'Record inserted successfully.'; } // close the db connection mysqli_close($mysqli_link); ?>
تابع mysql_query درنهایت دوتا آرگومان را برای اتمام عملیات مورد بررسی قرار میدهد.
آرگومان شماره یک: این آرگومان تحت عنوان یک لینک اتصال به اجرای کوئری میپردازد.
آرگومان شماره دو: یک کوئری mysql است که باید اجرا شود.
پس از دریافت و بررسی این دو آرگومان و درواقع پس از اجرای موفقیتآمیز کوئری، اتصال فعال پایگاه داده با استفاده از تابع mysqli_close بسته شده و اسکریپت موردنظر به مرحله اجرا درمیآید.
<code class="language-clike" data-prismjs-copy="کپی" data-prismjs-copy-success="کپی شد!" data-prismjs-copy-error="کپی نشد!"><?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; } $insert_query = "INSERT INTO students(`first_name`,`last_name`,`email`) VALUES ('". mysqli_real_escape_string($mysqli_link, 'John') ."','". mysqli_real_escape_string($mysqli_link, 'Wood') ."','". mysqli_real_escape_string($mysqli_link, 'john.wood@tutsplus.com') ."')"; // run the insert query If (mysqli_query($mysqli_link, $insert_query)) { echo 'Record inserted successfully.'; } // close the db connection mysqli_close($mysqli_link); ?>
۲- نحوه آپدیت رکورد در MySql
دوستان عزیز، نگران نباشید. هیچ عملیات پیچیدهای در این بخش وجود ندارد و نحوه آپدیت رکورد در MySql دقیقا شبیهبه عملیات مقداردهی است؛ با این فرقکه از کوئری Update استفاده میکنیم. در تکه کد زیر، First_name آپدیت خواهد شد و درواقع با اجرای این اسکریپت، در جدول Students بهروزرسانیهای لازم انجام میگیرد.
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; } $update_query = "UPDATE students SET `first_name` = '". mysqli_real_escape_string($mysqli_link,'Johnny') ."' WHERE `email` = 'john.wood@tutsplus.com'"; // run the update query If (mysqli_query($mysqli_link, $update_query)) { echo 'Record updated successfully.'; } // close the db connection mysqli_close($mysqli_link); ?>
۳- نحوه انتخاب رکورد در MySql
در این بخش، به بررسی شیوه واکشی رکوردها از پایگاه داده با استفاده از انواع متفاوت تابعهای mysqli آشنا میشویم. برایاین منظور از تابع mysqli_query استفاده کنیم. زمانی که مقدار Flag برابر با مقدار یک شد؛ تابع mysqli_query شیء حاصل را بازگشت میدهد. برای واکشی و تعریف حلقه تکرار روی رکوردهای شیء میتوان از تابعهای مختلفی استفاده کرد که در ادامه تعدادی از این توابع کاربردی آوردهشده است.
- تابع mysqli_fetch_all: در این تابع، نتایج پایگاه داده، بهصورت آرایههای انجمنی یا عددی و غیره واکشی میشود.
- تابع mysqli_fetch_array: در این تابع، امکان بازیابی برای ردیف تعیین شده، در هر بار فراخوانی فراهم میگردد.
- تابع mysqli_fetch_assoc: مشابه تابع mysqli_fetch_all عمل میکند. با این تفاوت که تابع mysqli_fetch_assoc ردیف حاصل از مرحله قبل را با استفاده از حلقه While، واکشی میکند.
- تابع mysqli_fetch_object: ردیف حاصل را تکبهتک در مرحله واکشی به پایگاه داده mysql اضافه میکند.
حال که با این توابع پرکاربرد آشنا شدید؛ به تکه کد زیر توجه کنید.
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; } $select_query = "SELECT * FROM students LIMIT 10"; $result = mysqli_query($mysqli_link, $select_query); while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { echo "First Name:" . $row['first_name'] . "<br/>"; echo "Last Name:" . $row['last_name'] . "<br/>"; echo "Email:" . $row['email'] . "<br/>"; echo "<br/>"; } // close the db connection mysqli_close($mysqli_link); ?>
در ادامه قطعه کد While هم به شرح زیر کدنویسی میشود. با اجرای هر کدام از این تکه کدها میتوانید رکوردهای عددی یا حتی آرایهای را از پایگاه داده mysqli واکشی کرده و نمایش دهید.
… … while ($row = mysqli_fetch_object($result)) { echo "First Name:" . $row->first_name . "<br/>"; echo "Last Name:" . $row->last_name . "<br/>"; echo "Email:" . $row->email . "<br/>"; echo "<br/>"; } ... ...
۴- نحوه حذف رکورد در Mysql
مخاطبان عزیز، در این قسمت از آموزش نحوه اتصال php به mysql، با نحوه حذف رکورد در Mysql آشنا خواهید شد. در تکه کد زیر نحوه انجام عملیات حذف، آورده شده است.
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; } $delete_query = "DELETE FROM students WHERE `email` = 'john.wood@tutsplus.com'"; // run the update query If (mysqli_query($mysqli_link, $delete_query)) { echo 'Record deleted successfully.'; } // close the db connection mysqli_close($mysqli_link); ?>
سخن آخر در رابطه با نحوه اتصال Php به Mysql
دوستان و همراهان گرامی مجموعه پیاستور، ضمن عرض خسته نباشید؛ بهانتهای آموزش نحوه اتصال php به mysql رسیدهایم و به شما این مژده را میدهیم که درنهایت با نحوه اتصال php به mysql آشنا شدید. برای کسب مهارت بیشتر بایستی کوئریهای پیچیدهتری را بنویسید و از آنها استفاده کنید.
mysql مانند ستون فقرات پروژه وب برای طرحان صفحات وب است. اگر در طراحی و مدیریت آن، مهارتهای کافی را بهدست آورید؛ میتوان گفت که تا میانه راه طراحی صفحات وب را رفتهاید. چرا که این ستون، میتواند گاهی Cms یا گاهی پلتفرمی جهت ردیابی کار آنلاین باشد. جمله آخر اینکه نظرات، انتقادات و پیشنهادات خود را با ما به اشتراک بگذارید. موفق و کامیاب باشید.
یک پاسخ
خیلی خوب و تمیز توضیح داده شده