آموزش برقراری ارتباط PHP و MySQL

daskhatmin فواد طهماسبی
65,318 بازدید
آموزش برقراری ارتباط PHP و MySQL

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

– ایجاد ارتباط با سرور پایگاه داده MySQL

mysqli_connect(host,username,password,dbname);

کد بالا حالت کلی (Syntax) تابع را نمایش میدهد که به صورت زیر در کدنویسی استفاده میشود:

<?php
// Create connection
$con=mysqli_connect("example.com","peter","abc123","my_db");

// Check connection
if (mysqli_connect_errno($con))
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
?>

برای قطع ارتباط نیز از تابع زیر استفاده میکنیم:

mysqli_close($con);

– ایجاد پایگاه داده MySQL

بعد از ایجاد ارتباط با سرور پایگاه داده  در صورتی که پایگاه داده وجود ندارد باید آن را بسازیم.  دستورات MySQL در PHP معمولا به صورت رشته ای در متغییری ذخیره میشود که این رشته از دستورات را کوئری (Query) مینامیم، برای مثال:

SELECT LastName FROM Employees

کد زیر نحوه ساخت یک پایگاه داده را توسط کدهای PHP نمایش میدهد.

<?php
$con=mysqli_connect("example.com","peter","abc123");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

// Create database
$sql="CREATE DATABASE my_db";
if (mysqli_query($con,$sql))
  {
  echo "Database my_db created successfully";
  }
else
  {
  echo "Error creating database: " . mysqli_error($con);
  }
?>

در کد بالا ابتدا ارتباط PHP با سرور پایگاه داده MySQL برقرار میشود  سپس دستورات ساخت یک پایگاه داده با استفاده از تابع ()mysqli_query اجرا شده و درپایان پیام مربوط به نتیجه عملیات نمایش داده میشود.

– ایجاد جدول در پایگاه داده MySQL

بعد از ساختن پایگاه داده، برای ذخیره اطلاعات داخل آن باید از جداول مربوط استفاده کرد. برای ایجاد جدول میتوانید از کد زیر استفاده کنید:

<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

// Create table
$sql="CREATE TABLE persons(FirstName CHAR(30),LastName CHAR(30),Age INT)";

// Execute query
if (mysqli_query($con,$sql))
  {
  echo "Table persons created successfully";
  }
else
  {
  echo "Error creating table: " . mysqli_error($con);
  }
?>

برای تعیین کلید اصلی و خاصیت افزایش خودکار، هنگام ایجاد جدول به صورت زیر عمل میکنیم:

$sql = "CREATE TABLE Persons 
(
PID INT NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(PID),
FirstName CHAR(15),
LastName CHAR(15),
Age INT
)";

عبارت AUTO_INCREMENT بیانگر خاصیت افزایش خودکار محتوای فیلد در ستون مربوطه  است. برای مثال شماره id کاربران عضو در سایت. PRIMARY KEY برای تعیین فیلد اصلی و یکتای داده ذخیره شده است به این معنی که داده ها به صورت سطر به سطر در جدول پایگاه داده ذخیره میشوند و هر سطر دارای فیلد خاصی است که منحصر به فرد بوده و برای شناسایی آن داده به کار میرود.

– ذخیره داده ها در پایگاه داده MySQL

برای ذخیره داده ها در پایگاه داده باید از دستورات مربوط به این کار استفاده کرد که به صورت زیر میباشد:

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

کد بالا حالت کلی این دستور را نشان میدهد و برای درک بهتر دستور میتوانید مثال زیر را بررسی کنید:

<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

mysqli_query($con,"INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('Peter', 'Griffin',35)");

mysqli_query($con,"INSERT INTO Persons (FirstName, LastName, Age) 
VALUES ('Glenn', 'Quagmire',33)");

mysqli_close($con);

در کد بالا نام و نام خانوادگی و سن کاربر به ترتیب در فیلدهای Age , LastName , FristName ذخیره میشود.

– ذخیره  داده ها از فرم در پایگاه داده MySQL

نمونه فرم در صفحه HTML:

<html>
<body>

<form action="insert.php" method="post">
Firstname: <input type="text" name="firstname">
Lastname: <input type="text" name="lastname">
Age: <input type="text" name="age">
<input type="submit">
</form>

</body>
</html>

اطلاعات کد بالا بعد از کلیک بر روی  Submit به فایل insert.php فرستاده میشوند تا در آنجا پردازش شده و در پایگاه داده ذخیره شوند. کدهای مربوط به ذخیره داده ها در پایگاه داده که در فایل insert.php در کنار فایل Html مربوط به فرمها نوشته میشود به صورت زیر است:

<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";

if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }
echo "1 record added";

mysqli_close($con);

– انتخاب داده ها از پایگاه داده MySQL و خواندن اطلاعات

بعد از ذخیره سازی اطلاعات در پایگاه داده نیاز به خواندن آنها در هنگام لزوم داریم. که به صورت زیر است:

SELECT column_name(s)
FROM table_name

کد بالا حالت کلی این دستور را نشان میدهد ، کد بالا داده های ستون column_name را از جدول table_name بازخوانی میکند.برای درک بهتر دستور به مثال زیر دقت کنید:

<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM Persons");

while($row = mysqli_fetch_array($result))
  {
  echo $row['FirstName'] . " " . $row['LastName'];
  echo "<br>";
  }

mysqli_close($con);
?>

– نمایش اطلاعات پایگاه داده MySQL در یک جدول Html

کد زیر برای نمایش اطلاعات ذخیره شده در یک جدول پایگاه داده به کار میرود:

<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM Persons");

echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>";

while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['FirstName'] . "</td>";
  echo "<td>" . $row['LastName'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

mysqli_close($con);
?>

 – ایجاد شرط در هنگام خواندن اطلاعات از جدول پایگاه داده MySQL

در اکثر مواقع خواندن داده ها از پایگاه داده باید دارای شرایطی نیز باشد. برای مثال انتخاب کاربران بالای ۱۳ سال.

SELECT column_name(s)
FROM table_name
WHERE column_name operator value

برای درک بهتر کد بالا مثال زیر را بررسی کنید:

<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM Persons
WHERE FirstName='Peter'");

while($row = mysqli_fetch_array($result))
  {
  echo $row['FirstName'] . " " . $row['LastName'];
  echo "<br>";
  }
?>

– مرتب سازی خروجی پایگاه داده MySQL

گاه خروجی که شما از پایگاه داده میگیرید نیاز به مرتب سازی دارد، برای مثال لیستی از نام کاربران بر اساس حروف الفبا.

SELECT column_name(s)
FROM table_name
ORDER BY column_name(s) ASC|DESC

و برای مثال استفاده به کد زیر نگاه کنید:

<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM Persons ORDER BY age");

while($row = mysqli_fetch_array($result))
  {
  echo $row['FirstName'];
  echo " " . $row['LastName'];
  echo " " . $row['Age'];
  echo "<br>";
  }

mysqli_close($con);
?>

مرتب سازی بر اساس دو ستون:

SELECT column_name(s)
FROM table_name
ORDER BY column1, column2

– بروز رسانی پایگاه داده

برای تغییر دادن داده های ذخیره شده در جدول به کار میرود:

UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value

مثال:

<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

mysqli_query($con,"UPDATE Persons SET Age=36
WHERE FirstName='Peter' AND LastName='Griffin'");

mysqli_close($con);
?>

– حذف داده ها از پایگاه داده MySQL

برای حذف کردن سطر داده ها از جدول به کار میرود:

DELETE FROM table_name
WHERE some_column = some_value

مثال:

<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

mysqli_query($con,"DELETE FROM Persons WHERE LastName='Griffin'");

mysqli_close($con);
?>

برگرفته از:  w3 schools

daskhatmin

فواد طهماسبی

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

83 دیدگاه برای “آموزش برقراری ارتباط PHP و MySQL”

  1. farhad گفت:

    سلام من می خوام مدیر توی my sqlمی خوام انتخاب کنم ایا میشه اگه میشه میشه منو راهنمایی کنید

  2. امین گفت:

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

    با تشکر فراوان از زحمات شما

  3. سعیده گفت:

    سلام شب بخیر ..
    آموزش دیزاینشو میشه برام بذارین ؟؟؟
    والا ما امسال کدنویسیشو یاد نگرفتیم و به صورت دیزاین کار کردیم و مثل همیشه وقتی بخوایم دیزاین کانکشن درست کنیم کلی خطا و اشکال پیدا میشه که دچار سردر گمی میشی …
    بار ها سعی خودمو کردم اما به جواب نرسیدم … هربار یه مشکل مسخره …
    مشکلم اینه که همه مراحل به درستی پیش میره حتی تو پایگاه داده ام هم جدول میذارم و داخلش محتویات میذارم اما وقتی دارم کانکشن میسازم ، موقع انتخاب پایگاه داده ارور میده و بیشتراز این جلو نمیره … شنبه امتحان دارم ..
    اگه محبت کنین و به این مشکل رسیدگی کنین ممنون میشم …
    ارادتمندم ….

  4. mahgole گفت:

    سلام
    من سایت لوازم خانگی با نرم افزارdreamweave و sqlserver طراحی می کنم اگه میشه ارتباط این دو نرم افزار و برام ایمیل کنید

  5. programmer گفت:

    thank you so much !!!!

  6. راضیه گفت:

    سلام میشه بگبد چطوری من متصل نمیشم به دیتابیسم؟؟
    جداول رو دارم اما نمیدونم کجا بذارمشون که بتونم وصل شم؟
    نجوه اتچ کردن چطوره

  7. بهار گفت:

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

  8. مهرداد گفت:

    سلام
    سوال من اینه که واسط بینPHP و DB چیه؟یعنی وقتی یه درخواستی در برنامه نوشته شد چطوری به پایگاه داده منتقل میشه؟

  9. مجید گفت:

    سلام ممنون از آموزش خوبتون.میشه فایل های این کدهایی که نوشتید رو برام بفرستید؟

  10. رضا واحدی گفت:

    باسلام وعرض خداقوت خدمت استاد گرانقدر
    استاد ، بنده با HTML و CSS یک صفحه وب طراحی کردم وپس از خریدن دامین ، صفحه مزبور را روی هاست قرار دادم وطبق قاعده می بایستی با تایپ url ، یعنی http://www.doosooye.ir بتوان به سایت خودم دسترسی پیدا کنم مع الوصف باپیغام زیر مواجه می شودم
    This webpage has a redirect loop

    The webpage at http://www.doosooye.ir/ has resulted in too many redirects. Clearing your cookies for this site or allowing third-party cookies may fix the problem. If not, it is possibly a server configuration issue and not a problem with your computer.
    وبا اضافه کردن نام فایل index.php به انتهای url بدون پیغام خطا دسترسی پیدا می کنم
    لطفا در صورت امکان راهنمایی ام بفرمایید چگونه ایراد فوق را برطرف کنم تا خودم وسایر کاربران با تایپ آدرس بدون تایپ نام فایل دسترسی پیدا کنند.ممنون ومتشکر

    1. افشين گفت:

      تا اونجا که من میدونم این مسئله مربوط به تنظیم یک پارامتر توی http.conf هست که من نمیدونم cpanel یا مدیر تنظیمات هاستی که شما از اونجا فضا تهیه کردین این اجازه رو به شما میده یا اینکه باید خودشون این تنظیم رو انجام بدن. به هر حال شما باید بنحوی به سرور آپاچی بگید که اولویت اجرای فایلها روی مسیری که به اون اشاره میکنید به چه ترتیب هست.
      مثلا توی wamp شما توی فایل http.conf باید دنبال عبارت زیر بگردید و تنظیمات رو انجام بدید:

      
          DirectoryIndex index.php index.php3 index.html index.htm
      
      

      در واقع تنظیم بالا به سرور میگه در صورت عدم ارجاع مستقیم به یک فایل با نام مشخص، به ترتیب index.php و اگر نبود index.php3 و اگر نبود index.html و …
      بعنوان صفحه آغازین برنامه در نظر گرفته شده و اجراء شود.

دیدگاه‌های بیشتر

کد HTMLCSSJavaScriptPHP