ارسال اطلاعات به دیتابیس در PHP — راهنمای رایگان و گام به گام

۲۷۵۴ بازدید
آخرین به‌روزرسانی: ۰۹ خرداد ۱۴۰۲
زمان مطالعه: ۱۶ دقیقه
ارسال اطلاعات به دیتابیس در PHP — راهنمای رایگان و گام به گام

در این مقاله، آموزش نحوه ارسال اطلاعات به دیتابیس در PHP ارائه شده است. در بخش اول، دو روش برای ارسال اطلاعات به دیتابیس در PHP یا درج یا همان INSERT کردن داده‌ها در پایگاه داده با PHP استفاده می‌شود. یکی از این روش‌ها استفاده از MySQLi و روش دیگر نیز استفاده از PDO است. در قسمت دوم این نوشتار نیز به آموزش ارسال اطلاعات Form به دیتابیس در PHP پرداخته خواهد شد. در انتها نیز به معرفی دوره‌های آموزش PHP فرادرس پرداخته شده است.

فهرست مطالب این نوشته

آموزش ارسال اطلاعات به دیتابیس در PHP

پیش از شروع یادگیری آموزش ارسال اطلاعات به دیتابیس در PHP نیاز به دسترسی به کنترل پنل میزبان وجود دارد.

ساخت جدول برای ارسال اطلاعات به دیتابیس در PHP

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

ساخت جدول برای ارسال اطلاعات به دیتابیس در PHP

ایجاد جدول فرایند ساده‌ای است که می‌توان آن را با ابزار تحت وب مدیریت MySQL‌ به نام phpMyAdmin انجام داد که در کنترل پنل میزبان (هاست) قابل دسترسی است. پس از باز کردن صفحه phpMyAdmin، صفحه زیر مشاهده می‌شود:

صفحه phpMyAdmin برای ارسال اطلاعات به دیتابیس در PHP

مطابق با تصویر فوق، جدولی با نام Students برای پایگاه داده u104357129_name ایجاد می‌شود. می‌توان با کلیک روی گزینه Create Table، جدول جدیدی ایجاد کرد. سپس صفحه جدیدی باز می‌شود که می‌توان تمام اطلاعات موردنیاز برای جدول را در آن وارد کرد. تصویر زیر نشان‌دهنده این صفحه است.

ایجاد جدول در MySQL برای ذخیره اطلاعات در دیتابیس در PHP

با توجه به اینکه در این مقاله قصد ارائه راهنمایی ساده و سریع وجود دارد، برای کسب اطلاعات بیش‌تر پیرامون ساختار جدول و پایگاه داده و تنظیماتی که می‌توان برای ستون‌ها انجام داد، می‌توان به مستندات رسمی ابزار 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";
67// Create connection
89$conn = mysqli_connect($servername, $username, $password, $database);
1011// Check connection
1213if (!$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);
2627?>

بخش اول کدهای بالا (خط‌های ۳ تا ۱‍۸) مربوطه به اتصال به پایگاه داده است. در ادامه این مقاله به این بخش پرداخته نخواهد شد. اگر چه برای آشنایی بیش‌تر با نحوه اتصال به پایگاه داده، می‌توان مقاله آموزشی اتصال 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 برای ارسال یا دریافت داده‌ها از پایگاه داده،‌ همیشه باید از عبارت‌های آماده استفاده شود.

برای استفاده از عبارت‌های آماده، باید یک متغیر جدید نوشته شود که متد ()prepare را از شی پایگاه داده فراخوانی کند. کدهای صحیح در ادامه آمده است:

1<?php
2$servername = "mysql.hostinger.com";
3$database = "u266072517_name"; 
4$username = "u266072517_user";
5$password = "buystuffpwd";
6$sql = "mysql:host=$servername;dbname=$database;";
7$dsn_Options = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
89// Create a new connection to the MySQL database using PDO, $my_Db_Connection is an object
10try { 
11  $my_Db_Connection = new PDO($sql, $username, $password, $dsn_Options);
12  echo "Connected successfully";
13} catch (PDOException $error) {
14  echo 'Connection error: ' . $error->getMessage();
15}
16‌‌
17// Set the variables for the person we want to add to the database
18$first_Name = "Test";
19$last_Name = "Testing";
20$email = "Testing@testing.com";
2122// Here we create a variable that calls the prepare() method of the database object
23// The SQL query you want to run is entered as the parameter, and placeholders are written like this :placeholder_name
24$my_Insert_Statement = $my_Db_Connection->prepare("INSERT INTO Students (name, lastname, email) VALUES (:first_name, :last_name, :email)");
2526// Now we tell the script which variable each placeholder actually refers to using the bindParam() method
27// First parameter is the placeholder in the statement above - the second parameter is a variable that it should refer to
28$my_Insert_Statement->bindParam(':first_name', $first_Name);
29$my_Insert_Statement->bindParam(':last_name', $last_Name);
30$my_Insert_Statement->bindParam(':email', $email);
3132// Execute the query using the data we just defined
33// The execute() method returns TRUE if it is successful and FALSE if it is not, allowing you to write your own messages here
34if ($my_Insert_Statement->execute()) {
35  echo "New record created successfully";
36} else {
37  echo "Unable to create record";
38}
3940// At this point you can change the data of the variables and execute again to add more data to the database
41$first_Name = "John";
42$last_Name = "Smith";
43$email = "john.smith@email.com";
44$my_Insert_Statement->execute();
4546// Execute again now that the variables have changed
47if ($my_Insert_Statement->execute()) {
48  echo "New record created successfully";
49} else {
50  echo "Unable to create record";
51}

در خطوط 28، 29 و 30 قطعه کد فوق، متدbindParam() ‎ از شی پایگاه داده استفاده شده است. متد bindValue()‎ هم وجود دارد که بسیار با این متد متفاوت است. در ادامه به توضیح بیش‌تری در مورد این دو متد پرداخته می‌شود:

  • متد bindParam()‎: این متد هنگامی که به متدexecute() ‎ برسد، داده‌ها را ارزیابی می‌کند. اولین باری که اسکریپت به یک متد execute()‎ می‌رسد، می‌بیند که ‎ $first_Name برابر با «‎‎ «Testاست، مقدار آن را به ‎ $‎first_Name‎می‌دهد و کوئری را اجرا می‌کند. زمانی که اسکریپت به دومین متد execute()‎ می‌رسد، متوجه می‌شود که حالا ‎ $first_Name‎ با مقدار John متناظر است و مقدار John را به ‎$first_Name تخصیص می‌دهد و کوئری مجدداً با مقدارهای جدید اجرا می‌شود. نکته حائز اهمیت این است که کوئری یک بار تعریف شده و با داده‌های مختلف در نقاط مختلف اسکریپت دوباره استفاده می‌شود.
  • متد ‎bindValue()‎: این متد داده‌ها را به محض رسیدن به bindValue()‎ ارزیابی می‌کند. از آن‌جایی که وقتی به bindValue()‎ رسیده‌ایم، مقدار Test در ‎$‎first_Name قرار داشته است، هر بار که یک متد execute()‎ فراخوانی شود، مقدار Test برای ‎$‎my_Insert_Statement مورد استفاده قرار خواهد گرفت.

نکته قابل توجه این است که از مقدار ‎ $first_Name‎دوباره استفاده شده است و دفعه دوم مقدار جدیدی به آن داده می‌شود. اگر بعد از اجرای این اسکریپت پایگاه داده بررسی شود، با وجود این که متغیر ‎$first_Name در انتهای اسکریپت برابر با مقدار John است، ملاحظه خواهد شد که هر دو نام تعریف شده در پایگاه داده وجود دارند. باید به یاد داشت که PHP قبل از اجرای یک اسکریپت آن را به طور کامل ارزیابی می‌کند.
اگر اسکریپت به‌روزرسانی و به جای متُد bindValue از bindParam استفاده شود، مقدار Test Testing دو بار در پایگاه داده MySQL درج می‌شود و مقدار «John Smith» نادیده گرفته خواهد شد.

تایید موفقیت ارسال اطلاعات به دیتابیس در PHP و حل مشکلات رایج در این خصوص

اگر اجرای کوئری و وارد کردن آن در پایگاه داده MySQL با موفقیت انجام شود، پیامی به صورت زیر نمایش داده خواهد شد:

پیام اتصال موفقیت آمیز

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

رفع خطاهای رایج ارسال اطلاعات به دیتابیس در PHP

با این حال، گاهی پیش می‌آید که در هنگام ارسال یک رکورد جدید به پایگاه داده با استفاده از دستور INSERT در زبان SQL خطا ایجاد شود. اما هیچ جای نگرانی نیست، چرا که راه‌هایی برای رفع این خطاها در MySQL وجود دارند.

پیغام خطای MySQLi در ارسال اطلاعات به دیتابیس در PHP

در صورتی که یک پیغام خطای MySQLi نمایش داده شود، می‌توان از روش‌های زیر برای رفع آن استفاده کرد. به عنوان مثال، در ابتدا باید یک خطای نحوی در کد ایجاد شود، پس از انجام این کار، پیامی مشابه با پیام زیر مشاهده خواهد شد:

پیغام خطای MySQLi در ارسال اطلاعات به دیتابیس در PHP

همان‌طور که در پیام بالا مشاهده می‌شود، بخش اول کدها مشکلی ندارد و اتصال با موفقیت انجام می‌شود. اما در ادامه، کوئری SQL با خطا مواجه شده است. این خطا در ادامه ملاحظه می‌شود:

خطای مربوط به کوئری SQL در PHP

یک خطای نحوی باعث شده که اسکریپت به درستی اجرا نشود. این خطا مربوط به خط کد زیر است:

1$sql = "INSERT INTO Students {name, lastname, email} VALUES ('Thom', 'Vial', 'thom.v@some.com')";

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

استثناها در اتصال PDO برای نمایش پیام‌های خطا

در خط 7 اتصال PDO، حالت خطا روی حالت «نمایش تمام استثناها» (Display all Exceptions) تنظیم شده است. اگر این مورد از اسکریپت حذف می‌شد و اجرای کوئری ناموفق می‌بود، هیچ پیام خطایی دریافت نمی‌شد. با فعال بودن استثناها، آن مشکل خاص در قالب پیام نشان داده می‌شود.

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

سایر خطاهای رایج ارسال اطلاعات به دیتابیس در PHP

سایر مشکلات احتمالی که امکان وقوع آن‌ها در هنگام اجرای کوئری‌ها وجود دارد، شامل موارد زیر هستند:

  • ستون‌ها نادرست مشخص شده باشند (ستون‌ها وجود ندارند یا اشتباه املایی وجود دارد).
  • یک نوع مقدار به نوع دیگری از ستون تخصیص داده شده باشد. به عنوان مثال، اگر عددی مانند 47 به یک ستون Name اختصاص داده شود، خطا رخ می‌دهد، زیرا مقدار ستون Name باید یک رشته باشد. اما در صورتی که عددی بین نقل قول‌ها قرار بگیرد، به عنوان مثال "47"، نتیجه درستی حاصل خواهد شد. زیرا هر عددی که بین نقل قول‌ها قرار بگیرد یک رشته محسوب می‌شود. اینجا نیز "47" به عنوان یک رشته به ستون Name اختصاص می‌یابد.
  • تلاش برای وارد کردن داده‌ها در جدولی که وجود ندارد یا اشتباه املایی جدول هم منجر به خطا می‌شود.

تمام این خطاها را می‌توان با پیروی از دستورالعمل‌های پیام خطا یا بررسی گزارش خطا (Error Log) به راحتی برطرف کرد.

ورود موفقیت‌آمیز داده ها در پایگاه داده

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

آموزش ارسال اطلاعات Form به دیتابیس در PHP

در ادامه این مطلب، مروری بر تگ‌های مورد نیاز برایآموزش ارسال اطلاعات Form به دیتابیس در PHP مانند تگ form، نحوه دریافت داده‌های فرم، ساخت دیتابیس، جدول و ستون‌ها و مباحث دیگر انجام شده است.

موارد لازم برای ارسال اطلاعات Form به دیتابیس در PHP

در مقاله آموزشی ارسال اطلاعات به دیتابیس در PHP ، نحوه ذخیره داده‌هایی آموزش داده می‌شود که از طریق فرم HTML به پایگاه داده ارسال شده‌اند. برای ذخیره‌سازی داده‌ها در پایگاه داده به ملزومات زیر نیاز است:

فُرم HTML چیست ؟

در ابتدا باید یک فرم HTML ایجاد شود که ورودی کاربر را از صفحه کلید بگیرد. فرم HTML سندی است که اطلاعات یک کاربر را با استفاده از کنترل‌های تعاملی روی سرور وب ذخیره می‌کند. فرم HTML حاوی انواع مختلفی از اطلاعات مانند نام کاربری، رمز عبور، شماره تلفن، شناسه ایمیل و موارد دیگر است.

کادر بررسی (check box)، کادر ورودی (input box)، دکمه‌های رادیویی (radio buttons)، دکمه‌های ارسال و غیره، از جمله عناصری هستند که در فرم‌های HTML به کار می‌روند. با کمک این عناصر، اطلاعات یک کاربر روی سرور وب ارسال می‌شوند. صفحات HTML از مجموعه فرمان‌هایی تشکیل شده‌اند که به آن «برچسب» یا «تگ» (Tag) می‌گویند و تگ «form» نیز برای ساخت فرم در HTML به کار می‌رود. در ادامه، ساختار نحوی برای استفاده از تگ فُرم ملاحظه می‌شود:

1<form> Form Elements... </form>

همچنین نیاز به ذکر است که برای ارسال مقادیر به صفحه بعد از نام صفحه به صورت ساختار نحوی زیر استفاده می‌شود. برای ارسال داده‌ها به سرور می‌توان از متد GET یا POST استفاده کرد:

1<form action=other_page.php  method= POST/GET>
2    Form Elements...
3</form>

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

اتصال به پایگاه داده برای ارسال اطلاعات Form به دیتابیس در PHP

به مجموعه داده‌های مرتبط با یکدیگر پایگاه داده می‌گویند. نرم افزار XAMPP مخفف چند پلتفرمی (Cross-Platform)، آپاچی (Apache)، PHP ،MySQL و پرل (Perl) است.

XAMPP  از جمله سرورهای محلی برای توسعه و برنامه نویسی وب سایت به حساب می‌آید. در PHP، می‌توان با استفاده از وب‌سرور میزبان محلی XAMPP به پایگاه داده متصل شد.

1<?php
2
3$servername = "localhost";
4$username = "username";
5$password = "password";
6$dbname = "database_name";
7
8// Create connection
9$conn = new mysqli($servername,
10	$username, $password, $dbname);
11
12// Check connection
13if ($conn->connect_error) {
14	die("Connection failed: "
15		. $conn->connect_error);
16}
17
18$sqlquery = "INSERT INTO table VALUES
19	('John', 'Doe', 'john@example.com')"
20
21if ($conn->query($sql) === TRUE) {
22	echo "record inserted successfully";
23} else {
24	echo "Error: " . $sql . "<br>" . $conn->error;
25}

خطوط ۲ تا ۴ در قطعه کد فوق برای اتصال به پایگاه داده است. servername بیانگر هاست مربوطه است که در اینجا localhost تعریف شد و username نام کاربری ورود به Mysql، متغیر password بیانگر رمز عبور و dbname نام پایگاه داده است. در مرحله بعد، هدف جمع‌آوری داده‌های فرمی است که از طریق فرم HTML ارسال شده‌اند.

دریافت داده‌های فرم HTML به پایگاه داده در PHP چگونه است ؟‌

متد PHP $_REQUEST یک متغیر فوق سراسری (Super Global) است که برای جمع‌آوری داده‌ها پس از ارسال فرم HTML مورد استفاده قرار می‌گیرد. در این بخش داده‌های فُرم جمع‌آوری می‌شوند.

این داده‌های فرم همان داده‌هایی هستند که از طریق فرم HTML ارسال شده‌اند. ساختار نحوی این متد به صورت زیر است:

1<?php
2
3if ($_SERVER["REQUEST_METHOD"] == "POST") {
4
5	// collect value of input field
6	$data = $_REQUEST['val1'];
7
8	if (empty($data)) {
9		echo "data is empty";
10	} else {
11		echo $data;
12	}
13}
14?>
15
16// Closing the connection.
17$conn->close();
18
19?>

مراحل طراحی پروژه ارسال اطلاعات Form به دیتابیس در PHP

مراحل کامل برای طراحی پروژه به شرح زیر است:

  • در گام اول باید XAMPP Server را راه‌اندازی کرد.
  • حال نیاز است در مرورگر وب صفحه localhost/phpmyadmin باز شود.
  • در این مرحله، پایگاه داده‌ای با نام staff و جدولی با اسم college ایجاد می‌شود.
  • اکنون باید کدهای HTML و PHP در نرم افزار Notepad نوشته شوند و در پوشه خاصی ذخیره شوند.
  • داده‌ها از طریق فرم HTML ارسال می‌شوند.
  • در مرحله آخر‌ نیاز است که درستی نتیجه بررسی شود؛ یعنی بررسی شود که داده‌ها به پایگاه داده اضافه شده‌اند یا خیر؟

حال در ادامه این بخش از مطلب آموزشی ارسال اطلاعات به دیتابیس در PHP ، هر یک از مراحل طراحی پروژه که در بالا ذکر شدند برای درک بهتر به صورت تصویری ارائه شده‌اند:

راه‌اندازی XAMPP Server:

در این گام از طریق باز کردن نرم افزار XAMPP و انتخاب گزینه XAMPP Start، سرور XAMPP راه‌اندازی می‌شود.

راه اندازی XAMPP Server برای ارسال اطلاعات به دیتابیس در PHP

باز کردن صفحه localhost/phpmyadmin

حال باید نشانی localhost/phpmyadmin در نوار آدرس مرورگر وب وارد شود. برای ساخت دیتابیس در صفحه باز شده، باید نام پایگاه داده و Encoding آن را مطابق با تصویر زیر مشخص کرد. در اینجا نام پایگاه داده موردنظر staff است، بعد از ثبت نام پایگاه داده، گزینه Create انتخاب می‌شود.

باز کردن صفحه localhost/phpmyadmin و ساخت پایگاه داده

ایجاد پایگاه داده و جدول در پروژه ارسال اطلاعات Form به دیتابیس در PHP

  • ایجاد جدول: پس از ساخت پایگاه داده به طور خودکار صفحه‌ای برای ساخت جدول باز می‌شود. حال نیاز است که مطابق با تصویر زیر جدولی با نام college ایجاد شود.
ساخت جدول در پایگاه داده برای ارسال اطلاعات به دیتابیس در PHP
  • ساخت ستون‌ها: پس از ساخت جدول، نوبت تکمیل کردن ستون‌های جدول است. با توجه به این که نوع همه فیلدهای جدول رشته است، Type آن‌ها Varchar انتخاب شده است. بعد از وارد کردن ستون‌ها باید دکمه Save انتخاب شود.
وارد کردن ستون های جدول پایگاه داده

نوشتن کدهای HTML و PHP در Notepad

  • کدنویسی PHP در Notepad: در این گام باید نرم افزار Notepad باز شود و کدنویسی PHP را در آن شروع کرد. حال نیاز است که مانند تصویر زیر، این سند Notepad را با نام «‎index.php» و سند Notepad دیگری را نیز با نام «insert.php» در پوشه‌ای داخل htdocs ذخیره کرد.
ذخیره سند php در htdocsنیاز است که کدهای زیر به ترتیب در فایل index.php و insert.php وارد شوند.

  • کد index.php: در کد زیر صفت action به فایل insert.php متصل شده است تا پس از تکمیل و ارسال فرم، کاربر به صفحه insert.php ارجاع داده شود. همچنین برای این فرم، متد Post در نظر گرفته شده است. برای دسترسی به مقادیر وارد شده درون فرم، باید برای هر ورودی (input) آن یک Name مطابق با نام آن input در نظر گرفته شود.
1<!DOCTYPE html>
2<html lang="en">
3
4<head>
5	<title>GFG- Store Data</title>
6</head>
7
8<body>
9	<center>
10		<h1>Storing Form data in Database</h1>
11
12		<form action="insert.php" method="post">
13			
14			
15<p>
16				<label for="firstName">First Name:</label>
17				<input type="text" name="first_name" id="firstName">
18			</p>
19
20
21
22			
23			
24<p>
25				<label for="lastName">Last Name:</label>
26				<input type="text" name="last_name" id="lastName">
27			</p>
28
29
30
31			
32			
33<p>
34				<label for="Gender">Gender:</label>
35				<input type="text" name="gender" id="Gender">
36			</p>
37
38
39			
40			
41			
42<p>
43				<label for="Address">Address:</label>
44				<input type="text" name="address" id="Address">
45			</p>
46
47
48			
49			
50			
51<p>
52				<label for="emailAddress">Email Address:</label>
53				<input type="text" name="email" id="emailAddress">
54			</p>
55
56
57			
58			<input type="submit" value="Submit">
59		</form>
60	</center>
61</body>
62
63</html>
  • کد insert.php: نیاز است که قطعه کد زیر در سند insert.php ذخیره شود.
1<!DOCTYPE html>
2<html>
3
4<head>
5	<title>Insert Page page</title>
6</head>
7
8<body>
9	<center>
10		<?php
11
12		// servername => localhost
13		// username => root
14		// password => empty
15		// database name => staff
16		$conn = mysqli_connect("localhost", "root", "", "staff");
17		
18		// Check connection
19		if($conn === false){
20			die("ERROR: Could not connect. "
21				. mysqli_connect_error());
22		}
23		
24		// Taking all 5 values from the form data(input)
25		$first_name = $_REQUEST['first_name'];
26		$last_name = $_REQUEST['last_name'];
27		$gender = $_REQUEST['gender'];
28		$address = $_REQUEST['address'];
29		$email = $_REQUEST['email'];
30		
31		// Performing insert query execution
32		// here our table name is college
33		$sql = "INSERT INTO college VALUES ('$first_name',
34			'$last_name','$gender','$address','$email')";
35		
36		if(mysqli_query($conn, $sql)){
37			echo "<h3>data stored in a database successfully."
38				. " Please browse your localhost php my admin"
39				. " to view the updated data</h3>";
40
41			echo nl2br("\n$first_name\n $last_name\n "
42				. "$gender\n $address\n $email");
43		} else{
44			echo "ERROR: Hush! Sorry $sql. "
45				. mysqli_error($conn);
46		}
47		
48		// Close connection
49		mysqli_close($conn);
50		?>
51	</center>
52</body>
53
54</html>

ارسال داده‌ها از طریق فرم HTML و بررسی نتایج

  • خروجی: در این مرحله باید آدرس localhost/7058/index.php را در نوار آدرس مرورگر نوشت. آدرس ذکر شده فرم را نشان می‌دهد. بعد از این که فرم تکمیل و ارسال شد، داده‌های آن به پایگاه داده ارسال می‌شوند. در ادامه تصاویر فرم مطرح شده نشان داده شده است:
ارسال اطلاعات به پایگاه داده در PHP
  • برای ارسال اطلاعات به دیتابیس نیاز است که در ابتدا فرم ساخته شده تکمیل شود:
تکمیل فرم داده برای ارسال اطلاعات به دیتابیس در PHP
  • پس از تکمیل فرم و انتخاب دکمه submit، پیام زیر نمایش داده می‌شود:
ذخیره موفقیت آمیز داده‌ها در دیتابیس
  • بررسی پایگاه داده: مطابق با تصویر زیر، پس از ارسال فرم داده‌ها، باید بررسی شود که داده‌ها به پایگاه داده اضافه شده‌اند یا خیر؟‌
بررسی داده های اضافه شده به پایگاه داده

جمع‌بندی

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

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

بر اساس رای ۱۰ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
HostingerGeeksforgeeksPHP.net
۲ دیدگاه برای «ارسال اطلاعات به دیتابیس در PHP — راهنمای رایگان و گام به گام»

باسلام، ممنون بابت این آموزش مفید
فقط یک نکته، بعد از زدن دکمه ارسال، وقتی وارد صفحه insert.php شدیم، اگر همین صفحه رو رفرش کنیم، دوباره اطلاعات به دیتابیس ارسال میشه و این عمل محدودیتی نداره که این یک نوع باگه به نظر من، برای اینکه با رفرش کردن، دیگه اطلاعات به دیتابیس ارسال نشه، باید چکار کرد؟

آموزش بسیار عالی برای کسانی که مثل بنده مبتدی هستند
ممنون از وقت و زحمتی که برای تهیه این آموزش گذاشتین.
فرادرس حمایتت می کنیم 🙂

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *