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

daskhatmin فواد طهماسبی
70,826 بازدید
آموزش برقراری ارتباط 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();
  }
?>

بهتر است برای سازگاری با زبان فارسی کد زیر را بعد از اتصال موفق به دیتابیس وارد کنید

//change character set to utf8 
mysqli_set_charset($con, "utf8")

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

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 اجرا شده و درپایان پیام مربوط به نتیجه عملیات نمایش داده میشود.

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

CREATE DATABASE mydb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

 

– ایجاد جدول در پایگاه داده 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

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

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);
?>

این دسخط هم میتونه آموزش کمکی خوبی باشه: آموزش ساخت فرم ثبت نام با php و mysql

daskhatmin

فواد طهماسبی

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

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

  1. modatoir گفت:

    دوست عزیر از زحمات شما ممنونم خدا خیرت بده

    1. سلام،
      خواهش میکنم، موفق باشید.

  2. محمد صادق حسنی گفت:

    بابت ارائه این نوشتار بسیار سپاسگزارم. مشکل من رو کاملا رفع کرد. موفق و پیروز باشید.

  3. farhad گفت:

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

  4. امین گفت:

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

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

  5. سعیده گفت:

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

  6. mahgole گفت:

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

  7. programmer گفت:

    thank you so much !!!!

  8. راضیه گفت:

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

  9. بهار گفت:

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

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

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

  11. مجید گفت:

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

  12. سهیل گفت:

    واقعا عالی بسیار مفید
    ممنون از سایت خوبتون.
    از لحاظ طراحی هم سایتتون خوبه

  13. امیر محمد گفت:

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

  14. رضا گفت:

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

    ممنون ممنون ممنون

  15. مرتضی نگهی گفت:

    سلام خسته نباشید. من یه دیتا بیس ساختم با 30 تا جدول با این کد

     
    query($sql) === TRUE) {
        echo 'دیتابیس ساخته شد. ';
    }
    else {
        echo 'قادر به ساخت دیتابیس نمیباشیم. ';
    };
    
    
     // اتصال به sql server و دیتابیس
    $conn = new mysqli('localhost', 'root', '', 'billboard');
    if (mysqli_connect_errno()) {
        exit('Connection lost');
    }
    $city = array("azarbayjan", "ardabil", "esfahan", "alborz", "iylam", "bushehr", "tehran", "chaharmahal", "khorasan", "khozestan", "zanjan", "semnan", "sistan", "fars", "ghazvin", "ghom", "kerman", "kermanshah", "kohkiloye", "gholestan", "gilan", "lorestan", "mazandaran", "markazi", "hormozgan", "hamedan", "yazd" );
    for($i=0;$iquery($sql) === TRUE) {
            echo " $table  جدول ساخته شد      ";
        }
        else {
            echo " $table  جدول ساخته نشد      ";
        }
    }
    
    $conn->close();
    ?>
    

    و وقتی که فرا خوانی انجام میدم چییزایی که فارسی هستن رو علامت سوال نشون میده . همه فایل ها هم با notpad ++ utf8 with bom ذخیره کردم . اگه میشه راهنماییم کنید ممنون.

    <?php
            $con=mysqli_connect("localhost","root","","billboard");
            if(isset($_POST['city'])){
                $result = mysqli_query($con,"SELECT * FROM ".$_POST['city']."");
            }
            else{
                $result = mysqli_query($con,"SELECT * FROM tehran");
            }
            while($row = mysqli_fetch_array($result)){
                echo('
                    
                        
                            
                                '.$row["title"].'
                            
                            
                                '.$row["roz"].'
                            
                        
                        
                            
                             '.$row["price"].' 
                        
                    
                ');
            }
            mysqli_close($con);
            ?>
    

  16. بهار گفت:

    با سلام ایا با برنامه php می توان به پایگاه داده دیگری بجز my sql متصل شد اگر امکان اش وجود دارد به چه پایگاه داده ای و با چه دستوراتی میشود چنین کاری انجام داد

    پیشاپیش از کمک و راهنمایی های شما کمال تشکر را دادرم

  17. زهرا گفت:

    سلام من دانشجوی رشته نرم افزار هستم.در اتصال صفحه وبم به پایگاه داده دچار مشکل شدم ازکدهای داده شده استفاده کردم.ناگفته نماند که ویندوزم 64بیتی است وویندوزم 8 است. ولی easyphp که نصب کردم نوشته 32 بیتی.وکدهایی که نوشتم با netbeans IDE نوشتم.

  18. حمید رضا رحیمی گفت:

    آقا ایول
    درسته مشکلم حل نشد ولی کلی یاد گرفتم
    ممنون

  19. معصومه گفت:

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

    $connection=mysql_connect("localhost","root","");
    $db=mysql_select_db('photoFarhang',$connection);
    

    1. فؤاد طهماسبی گفت:

      اطلاعات کامل نیست، لطفا مطلب رو از اول بخونید.

  20. افشین گفت:

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

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

*اگر پرسشی دارید که مربوط به این مطلب نیست لطفا در بخش پرسشها مطرح کنید. در غیر این صورت دیدگاه شما تایید نخواهد شد.


کد HTMLCSSJavaScriptPHP