ارسال اطلاعات به دیتابیس در PHP — راهنمای رایگان و گام به گام
در این مقاله، آموزش نحوه ارسال اطلاعات به دیتابیس در PHP ارائه شده است. در بخش اول، دو روش برای ارسال اطلاعات به دیتابیس در PHP یا درج یا همان INSERT کردن دادهها در پایگاه داده با PHP استفاده میشود. یکی از این روشها استفاده از MySQLi و روش دیگر نیز استفاده از PDO است. در قسمت دوم این نوشتار نیز به آموزش ارسال اطلاعات Form به دیتابیس در PHP پرداخته خواهد شد. در انتها نیز به معرفی دورههای آموزش PHP فرادرس پرداخته شده است.
آموزش ارسال اطلاعات به دیتابیس در PHP
پیش از شروع یادگیری آموزش ارسال اطلاعات به دیتابیس در PHP نیاز به دسترسی به کنترل پنل میزبان وجود دارد.
ساخت جدول برای ارسال اطلاعات به دیتابیس در PHP
در ابتدا باید یک جدول برای دادهها ایجاد شود. اگر جدول از قبل ساخته شده بود، نیاز به تکرار آن نیست و باید به مرحله بعدی رفت.
ایجاد جدول فرایند سادهای است که میتوان آن را با ابزار تحت وب مدیریت MySQL به نام phpMyAdmin انجام داد که در کنترل پنل میزبان (هاست) قابل دسترسی است. پس از باز کردن صفحه phpMyAdmin، صفحه زیر مشاهده میشود:
مطابق با تصویر فوق، جدولی با نام Students برای پایگاه داده u104357129_name ایجاد میشود. میتوان با کلیک روی گزینه Create Table، جدول جدیدی ایجاد کرد. سپس صفحه جدیدی باز میشود که میتوان تمام اطلاعات موردنیاز برای جدول را در آن وارد کرد. تصویر زیر نشاندهنده این صفحه است.
با توجه به اینکه در این مقاله قصد ارائه راهنمایی ساده و سریع وجود دارد، برای کسب اطلاعات بیشتر پیرامون ساختار جدول و پایگاه داده و تنظیماتی که میتوان برای ستونها انجام داد، میتوان به مستندات رسمی ابزار phpMyAdmin مراجعه کرد.
اکنون در ادامه برخی از توضیحات لازم در خصوص تنظیمات و خصوصیتهای ستونهایی ارائه میشود که استفاده شدهاند:
- Name: این ویژگی برای نام ستون است که در بالای جدول نشان داده خواهد شد.
- Type: برای مشخص کردن نوع داده استفاده میشود و میتواند شامل string ،varchar ،int و بسیاری موارد دیگر باشد. به عنوان مثال در تصویر فوق varchar انتخاب شده است، چون باید نامی از نوع رشته وارد این فیلد شود.
- Length/Values: برای تعیین حداکثر طول مجاز ورودی در ستون مربوطه به کار میرود.
- Index: در تصویر فوق برای فیلد ID از شاخص اصلی (Primary) استفاده شده است. هنگام ساخت جدول پیشنهاد میشود که برای آن یک ستون ID در نظر گرفته شود. ستون ID ورودیهای جدول را میشمارد و موقع پیکربندی روابط جدول، مورد نیاز خواهد بود. همچنین، گزینه A_I تیک خورده که به معنی افزایش خودکار (Auto Increment) است که به طور خودکار ورودیها را میشمارد.
پس از فشردن دکمه Save، جدول مربوطه ساخته میشود.
کدهای PHP لازم برای ارسال اطلاعات به دیتابیس در PHP
برای ارسال اطلاعات به دیتابیس در PHP یا همان درج (INSERT) کردن اطلاعات در پایگاه داده MySQL، دو روش مختلف وجود دارد. هم میتوان از روش PHP MySQLi استفاده کرد و هم امکان به کارگیری روش «شی داده PHP» یا همان PDO وجود دارد.
روش MySQLi برای ارسال اطلاعات به دیتابیس در PHP
برای ارسال اطلاعات به دیتابیس در PHP، ابتدا نیاز است که اتصال به پایگاه داده برقرار شود. پس از انجام این کار، باید کار را با نوشتن کوئری درج کردن در MySQL ادامه داد. برای عملیات درج یا همان ارسال اطلاعات به دیتابیس از کوئری INSERT استفاده میشود. در ادامه، نمونه کد کامل PHP با روشهای (متُدهای) لازم برای اتصال و وارد کردن دادهها (درج دادهها) ارائه شده است:
1<?php
2$servername = "mysql.hostinger.co.uk";
3$database = "u266072517_name";
4$username = "u266072517_user";
5$password = "buystuffpwd";
6
7// Create connection
8
9$conn = mysqli_connect($servername, $username, $password, $database);
10
11// Check connection
12
13if (!$conn) {
14 die("Connection failed: " . mysqli_connect_error());
15}
16
17echo "Connected successfully";
18
19$sql = "INSERT INTO Students (name, lastname, email) VALUES ('Test', 'Testing', 'Testing@tesing.com')";
20if (mysqli_query($conn, $sql)) {
21 echo "New record created successfully";
22} else {
23 echo "Error: " . $sql . "<br>" . mysqli_error($conn);
24}
25mysqli_close($conn);
26
27?>
بخش اول کدهای بالا (خطهای ۳ تا ۱۸) مربوطه به اتصال به پایگاه داده است. در ادامه این مقاله به این بخش پرداخته نخواهد شد. اگر چه برای آشنایی بیشتر با نحوه اتصال به پایگاه داده، میتوان مقاله آموزشی اتصال PHP به MySQL — به زبان ساده را مطالعه کرد. بنابراین، اکنون در ادامه به ارائه توضیحات بیشتری برای خط ۱۹ کدهای فوق پرداخته میشود. خط ۱۹ به صورت زیر است:
1$sql = "INSERT INTO Students (name, lastname, email) VALUES ('Test', 'Testing', 'Testing@tesing.com')";
خط کد فوق مهمترین بخش این کدها در این آموزش به حساب میآید، زیرا در آن عملیات ارسال اطلاعات به دیتابیس در PHP پیادهسازی شده است. در خط کد فوق، عبارت INSERT INTO دستوری است که برای ارسال دادهها به جدول مربوطه در پایگاه داده مورد استفاده قرار میگیرد. با استفاده از دستور INSERT INTO در این مثال، دادهها به جدول Students اضافه میشوند.
همانطور که در کدهای فوق مشاهده میشود، پس از دستور INSERT INTO، نام ستونهایی از جدول (name, lastname, email) در داخل پرانتز آمده که قرار است دادهها در آنها درج شوند. در مشخص کردن نام ستونهایی که قرار است مقادیر مربوطه در آنها درج شوند، ترتیب مهم است. مثلاً اگر نام ستونها در این دستور به صورت (email, lastname, name) نوشته میشد، مقادیر با ترتیب اشتباهی اضافه میشدند.
در ادامه این خط از کد از گزاره VALUES استفاده شده است. پس از گزاره VALUES مقادیری در داخل پرانتز نوشته میشوند که قصد وارد کردن آنها در هر یک از ستونهای مشخص شده وجود دارد. به این طریق، هر ستون نمایاننده یک مقدار مشخص است. برای مثال در این مورد به خصوص، نتیجه به صورت زیر خواهد بود:
name = Test, lastname = Testing, email = Testing@testing.com
نکته دیگری که وجود دارد این است که چون کوئری مربوطه در داخل کدهای PHP نوشته شده است، کوئریهای SQL باید حتماً بین علامتهای نقل قول (" ") قرار بگیرند. در مثال فوق، همه کدهایی که بین علامت نقل قول و پس از عبارت «sql =$» قرار گرفتهاند، کوئری یا همان پرسوجوی SQL به حساب میآیند.
بخش بعدی کد (خطهای ۲۰ تا ۲۲) که مجدداً در خط زیر آمده است، بررسی میکند که آیا کوئری مربوطه موفقیتآمیز بوده است یا خیر.
1if (mysqli_query($conn, $sql)) {
2 echo "New record created successfully";
3}
در صورتی که کوئری با موفقیت اجرا شده باشد، به سادگی پیامی با محتوای «New record created successfully» نشان داده خواهد شد. بخش آخر کدها (خطهای ۲۲ تا ۲۴) نیز مربوط به نمایش پیام خطا در صورت موفقیتآمیز نبودن اجرای کوئری مربوطه است:
1else {
2 echo "Error: " . $sql . "<br>" . mysqli_error($conn);
3}
خط کد فوق یک پیغام خطای SQL را در صورت بروز مشکل نمایش میدهد. در ادامه این مقاله آموزشی به روش شی داده PHP یا همان متُد PDO برای ارسال اطلاعات به دیتابیس در PHP پرداخته خواهد شد.
روش PDO برای ارسال اطلاعات به دیتابیس در PHP چگونه انجام میشود؟
افزونه PDO یا همان PHP Data Objects یک رابط کم حجم و پایدار را برای دسترسی به پایگاههای داده در PHP فراهم میکند. PDO یک لایه انتزاعی را برای دسترسی به دادهها ارائه میدهد. این یعنی فارق از نوع پایگاه داده استفاده شده، میتوان از توابع یکسانی برای صدور کوئریها و بیرون کشیدن دادهها استفاده کرد.
همچنین، افزونه PDO برای مواقعی که بنا به دلایلی نیاز است نوع پایگاه داده تغییر کند، افزونه بسیار مفیدی به حساب میآید و میتوان با نوشتن یک خط کد، پایگاه داده را عوض کرد. برای مثال، هنگامی که در طراحی سایت با PHP از پایگاه داده MySQL استفاده شده باشد و نیاز به تغییر نوع پایگاه به وجود بیاید، در صورت استفاده از افزونه PDO، میتوان نوع پایگاه داده را با نوشتن یک یا چند دستور ساده تغییر داد. اما در صورتی که از افزونه PDO استفاده نشده باشد، به اجبار باید تمام کدهای مرتبط با پایگاه داده را تغییر داد.
برای استفاده از متد PDO هم مانند مثال قبلی در ابتدا نیاز است که اتصال به پایگاه داده برقرار شود و این کار با ایجاد یک شی PDO جدید انجام میشود. از آنجایی که اتصال به پایگاه داده MySQL یک شی PDO محسوب میشود، برای آماده کردن و اجرای کوئریها باید از متدهای مختلف PDO استفاده کرد. منظور از متُد هر تابعی است که جزئی از هر شی به حساب میآید. شیوه فراخوانی متدهای اشیا به صورت است:
1$the_Object->the_Method();
روش PDO، امکان «آمادهسازی» کدهای SQL را پیش از اجرای آنها فراهم میکند. به عبارت دیگر، کوئری SQL پیش از اجرا شدن، ارزیابی و «تصحیح» میشود. یک حمله تزریق SQL ساده میتواند فقط با نوشتن کدهای SQL در درون فیلدی داخل یک فرم انجام شود. برای درک بهتر این موضوع، در ادامه مثالی ارائه شده است:
1// User writes this in the username field of a login form
2john"; DROP DATABASE user_table;
3// The final query becomes this
4"SELECT * FROM user_table WHERE username = john"; DROP DATABASE user_table;
در قطعه کد فوق، از آنجایی که کد SQL از نظر قواعد نحوی درست است، علامت نقطه ویرگول، عبارت DROP DATABASE user_table را به یک کوئری جدید تبدیل میکند و جدول User حذف خواهد شد. اما در صورت استفاده از عبارتهای آماده (Prepared Statements)، به کاراکترهای کوتیشن (“) و نقطه ویرگول اجازه داده نخواهد شد که کوئری اصلی را خاتمه دهند و دستور مخرب DROP DATABASE هیچ وقت اجرا نمیشود. بنابراین، رعایت نکته زیر بسیار ضروری است.
نکته: هنگام استفاده از روش PDO برای ارسال یا دریافت دادهها از پایگاه داده، همیشه باید از عبارتهای آماده استفاده شود.
باسلام، ممنون بابت این آموزش مفید
فقط یک نکته، بعد از زدن دکمه ارسال، وقتی وارد صفحه insert.php شدیم، اگر همین صفحه رو رفرش کنیم، دوباره اطلاعات به دیتابیس ارسال میشه و این عمل محدودیتی نداره که این یک نوع باگه به نظر من، برای اینکه با رفرش کردن، دیگه اطلاعات به دیتابیس ارسال نشه، باید چکار کرد؟
آموزش بسیار عالی برای کسانی که مثل بنده مبتدی هستند
ممنون از وقت و زحمتی که برای تهیه این آموزش گذاشتین.
فرادرس حمایتت می کنیم 🙂