5 خطوات لإنشاء إتصال لقاعدة البيانات MySQL مع PHP



5 خطوات لإنشاء إتصال لقاعدة البيانات MySQL مع PHP


شرحنا في درس سابق كيفية تثبيت سيرفر محلي لملفات PHP. وفي هذا الدرس تحتاج إلى قاعدة بيانات mysql ويفضل استخدام الملحقة في السيرفر PHPmyAdmin كما تحتاج لسيرفر apache يقوم على تشغيل ملفات php وأيضاً محرر نصوص بسيط وأنا شخصياً استخدم Sublime text أو يمكنك استخدام محرر النصوص المفضّل لديك.

سنعمل في هذا الدرس على إنشاء ملف php ثم نقوم بالإتصال مع قاعدة بيانات قمنا بإنشائها مسبقاً ثم سنقوم بجلب المعلومات من قاعدة البيانات وعرضها في صفحة الويب باستخدام وسوم html حيث ستكون جاهزة للتنسيق.

الخطوة 0 : إنشاء قاعدة بيانات


هذه الخطوة سنشرح بها رؤوس أقلام فقط لأنها كونك تريد إنشاء اتصال مع قاعدة البيانات فهذا حتماً يعني أنك على دراية تامة باستخدام لغة PHP وأيضاً قواعد البيانات MySQL. وإن لم تكن على خبرة واسعة في هذه اللغات يمكنك الإطلاع على دورة PHP مع MySQL وأيضاً يمكنك الإطلاع على مصادر لتلك اللغات موقع PHP وموقع MySQL .

لنبدأ بهذه الخطوة قم بالخطوات التالية:

  1. افتح السيرفر (اذا كنت تعمل على السيرفر المحلي) ثم افتح برنامج PHPmyAdmin.

  2. في قسم قواعد البيانات قم بكتابة اسم قاعدة البيانات الجديد ثم اضغط على إنشاء جديد.

  3. ادخل إلى قاعد البيانات ثم قم بإنشاء جدول.

  4. قم بإنشاء أعمدة للجدول مثل id ثم عمود للإسم وعمود للكنية وعمود للعمر وعمود للدولة ..إلخ

الخطوة 1 : الإتصال بقاعدة البيانات

  1. تحتاج لتبدأ بهذه الخطوة اسم المستخدم وكلمة المرور وعنوان السيرفر (غالباً مايكون
    localhost أو 127.0.0.1).

  2. قم بإنشاء ملف وسميه connect.php أو قم بتسميته كما تريد ثم ضع بداية ونهاية لكود php قبل وسوم html.

  3. ضمن وسم php قم بإنشاء متغير وليكن $db وارفق معه الدالّة mysql_connect() مع إرفاق المتغيرات ضمن القوسين وهي قيم معلومات قاعدة البيانات بالترتيب عنوان السيرفر ثم اسم المستخدم ثم كلمة المرور.

  4. لاتنسى استخدام الدوال die() و mysql_error() لإظهار رسالة الخطأ في حال حدوث خطأ عند الاتصال.

  5. احفظ الملف ثم قم بفتح الملف عبر المتصفح والنتيجة ملف فارغ باستثناء عنوان الصفحة مالم يكن هناك خطأ في معلومات عنوان السيرفر أو اسم المستخدم أو كلمة المرور فعندها ستظهر رسالة خطأ موضحّة نوع الخطأ لإصلاحه.

شاهد المثال التالي



<?php

$db = mysql_connect("localhost","username","password");
if (!$db) {
die("Database connection failed miserably: " . mysql_error());
}

?>

<html>
<head>
<title>الخطوة الأولى</title>
</head>

<body>

</body>
</html>

يستخدم المتغير $db في خطوات لاحقة لإتمام عملية الإتصال.

الخطوة 2 : إختيار لغة البيانات التي تريد استخدامها


هذه الخطوة بسيطة جداً فبعد إنشاء قاعدة بيانات من خلال phpmyadmin كما فعلنا سابقاً في الخطوة 0 سنقوم الآن باستخدام اسم قاعدة البيانات مع الدالّة mysql_select_db() كما في المثال التالي:
<?php

//Step1

$db = mysql_connect("localhost","username","password");
if (!$db) {
die("Database connection failed miserably: " . mysql_error());
}

//Step2

$db_select = mysql_select_db("databasename",$db);
if (!$db_select) {
die("Database selection also failed miserably: " . mysql_error());
}
?>

<html>
<head>
<title>الخطوة الثانية</title>
</head>

<body>

</body>
</html>

أيضاً في هذه الخطوة ستشاهد صفحة بيضاء فارغة لأننا لم نجلب أي شيء من قاعدة البيانات بعد. باستثناء اذا كان هناك مشكلة في شيفرة php البرمجية عندها ستظهر رسالة خطأ.


الخطوة 3 : إنجاز طلب قاعدة البيانات


في هذه الخطوة سنعمل داخل الوسم <body> حيث سنقوم بجلب جميع البيانات أو الصفوف الموجودة في الجدول الموجودة ضمن قاعدة البيانات التي سميناها واستخدمناها في الخطوة السابقة لذلك سنحتاج في هذه الخطوة إلى اسم الجدول المراد جلب البيانات منه كما يجب ألا ننسى عند استخدام شيفرة php استخدام بداية ونهاية وسم php. كما سنستخدم أيضاً المتغير $result والذي سيقوم بجلب جميع البيانات من الجدول.

لاحظ تكملة المثال



<?php

//Step1

$db = mysql_connect("localhost","username","password");
if (!$db) {
die("Database connection failed miserably: " . mysql_error());
}

//Step2
$db_select = mysql_select_db("databasename",$db);
if (!$db_select) {
die("Database selection also failed miserably: " . mysql_error());
}
?>

<html>
<head>
<title>الخطوة الثالثة</title>
</head>

<body>

<?php

//Step3

$result = mysql_query("SELECT * FROM mytable", $db);
if (!$result) {
die("Database query failed: " . mysql_error());
}
?>

</body>
</html>

أيضاً في هذه الخطوة ستشاهد صفحة بيضاء فارغة لأننا لم نجلب أي شيء من قاعدة البيانات بعد. باستثناء اذا كان هناك مشكلة في شيفرة php البرمجية عندها ستظهر رسالة خطأ.


الخظوة 4 : إظهار البيانات في الصفحة


في هذه الخطوة سنقوم بجلب النتيجة كمصفوفة وعرضها بصف باستخدم loop طبعاً عند جلب النتيجة سأقوم بتخطي الصف 0 حيث أنه عبارة عن id في جدول قاعدة البيانات ولكن سأقوم بنشر المعلومات الموجودة في باقي الأعمدة في جدول قاعدة البيانات. ولعرض البيانات يمكن استخدام أسماء الحقول في جدول قاعدة البيانات عوضاً عن الأرقام وذلك ضمن "إشارات الاقتباس".

تابع المثال 




<?php

//Step1

$db = mysql_connect("localhost","username","password");
if (!$db) {
die("Database connection failed miserably: " . mysql_error());
}

//Step2

$db_select = mysql_select_db("databasename",$db);
if (!$db_select) {
die("Database selection also failed miserably: " . mysql_error());
}
?>

<html>
<head>
<title>الخطوة الرابعة</title>
</head>

<body>

<?php

//Step3

$result = mysql_query("SELECT * FROM mytable", $db);
if (!$result) {
die("Database query failed: " . mysql_error());
}

//Step4
while ($row = mysql_fetch_array($result)) {
echo $row[1]." ".$row[2]."<br />";
}

?>

</body>
</html>

في هذه العملية ستشاهد جميع بيانات جدول قاعدة البيانات على صفحة الويب

الخظوة 5 : إغلاق الإتصال


عند إنشاء اتصال مع قاغدة البيانات يتوجب إغلاق الإتصال تجنباً لحصول أي مشاكل برمجية نقوم بإغلاق الاتصال بعد وسم إغلاق صفحة html وهو </html> .
<?php
//Step1

$db = mysql_connect("localhost","username","password");
if (!$db) {
die("Database connection failed miserably: " . mysql_error());
}

//Step2
$db_select = mysql_select_db("databasename",$db);
if (!$db_select) {
die("Database selection also failed miserably: " . mysql_error());
}
?>

<html>
<head>
<title>الخطوة الخامسة</title>
</head>
<body>

<?php

//Step3

$result = mysql_query("SELECT * FROM mytable", $db);
if (!$result) {
die("Database query failed: " . mysql_error());
}

//Step4
while ($row = mysql_fetch_array($result)) {
echo $row[1]." ".$row[2]."<br />";
}
?>

</body>
</html>

<?php

//Step5

mysql_close($db);

?>

في حال لديك اي سؤال يمكنك طرحه في مكان التعليقات

هناك 36 تعليقًا:

  1. عندما اقوم باضافة بيانات باللغة العربية تظهر بالداتا بيس على شكل رموز كيف ممكن اخليهم يظهرو بالعربي
    علما اني حاط ال <meta charset="utf-8
    ارجو الرد

    ردحذف
    الردود
    1. غير نوع العامود في قاعدة البيانات الي نوع in var char

      حذف
    2. لازم تغير الترميز الي utf8

      حذف
  2. تظهر لي هذه الرساله عند الاتصال بقاعدة البيانات

    Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/u572880131/public_html/config.php on line 8

    Warning: mysql_connect(): Can't connect to MySQL server on '31.170.166.59' (110 "Connection timed out") in /home/u572880131/public_html/config.php on line 8
    cannot connect to server

    طبعا الموقع استضافه مجانية

    ردحذف
    الردود
    1. الاستضافة المجانية فيها مشاكل دوماً. لكن يقول لك أن تستخدم mysqli بدلاً من mysql

      حذف
  3. شرح مميز
    لكن لو من لوحة تحكم مثل ما يستخدمه موقع الاستضافة ipage تقريبا اسمه vDeck

    ردحذف
  4. كيف اقوم بتعديل كلمة مرور مستخدم او اضافة مستخدمة لقاعدة البيانات من خلال cpanel

    ردحذف
    الردود
    1. من خلال الدخول على قسم قاعدة البيانات في لوحة التحكم والضغط على المستخدم وتغيير كلمة المرور.

      حذف
  5. اسلام عليكم
    هل من الممكن ربط قاعدة بيانات مركبه في جهاز كمبيوتر Offline وربط في سرفر خارجي عبر الانترنت وربط اكثر من جهاز علي السرفر الخارجي وعمل مزامنه بكل جديد في السرفر الخارجي والاجهزة المربوطة عليه ؟

    ارجو الرد عبر رسالة للايمايل mhmedsrab@gmail.com او هنا

    ردحذف
  6. كيف يمكن ربط قاعده البيانات

    ردحذف
    الردود
    1. هذا الدرس حول ربط قاعدة البيانات مع PHP

      حذف
  7. السلام عليكم
    بيانات الجدول بتظهر لي اعمدة الكلام فقط ولا تظهر اعمدة الارقام ما الحل

    ردحذف
    الردود
    1. يرجى ذكر التفاصيل أكثر أو ارفاق صورة حول الكود الذي تستخدمه

      حذف
  8. كيف اربط قاعده بيانات الاسم والاميل حيث اذا صح يعبر للصفحة الثانيه أما إذا خطا يبقى في الصفحه الاسم . يعني شرط لل button

    ردحذف
    الردود
    1. يرجى ذكر التفاصيل أكثر أو ارفاق صورة حول الكود الذي تستخدمه

      حذف
  9. تظهر لي رسالة الخطأ التالي:
    The requested URL / was not found on this server
    apache php 7.2 18 server at localhost port 80

    ردحذف
  10. محتاج مثال عملى جاهز اتدرب عليه
    tamerprject@gmail.com

    ردحذف
  11. عند تفقد الموقع يكتب لي أنه هنالك كود غير معرف

    ردحذف
    الردود
    1. أخي الأفضل دائماً إرفاق صورة عند طرح المشكلة هنا

      حذف
  12. انا عندي قاعدة بيانات جاهزة وموقع جاهز بس عايز اربطهم ببعض كل ما اعمل عملية استيراد قاعدة البيانات اللي معايا مش بترضي تفتح

    ردحذف
  13. قمت بانشاء قاعدة بيانات وتح تحديد العمود الاول باسم wid وتحديده انه هو primarykey والنوع int لكن عند ادخال البيانات يظهر لي خطا أن الحقل الاول فارغ ، مع العلم بأنه لابد من تركه فارغا لتقوم قاعدة البيانات بالملئ التلقائي له حسب الشرح اللذي شاهدته

    ردحذف
    الردود
    1. أخي في الأمثلة السابقة يتم جلب بيانات موجودة مسبقا في قاعدة البيانات وليس إدخال البيانات.
      عليك إدخال البيانات بشكل يدوي في قاعدة البيانات و ان كان هذا ما تفعله حقا عليك مراجعة الخطأ الناتج من قاعدة البيانات و ليس الخطأ بالكود

      حذف
  14. سلامظهرت لي هده الرسالة
    Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\ex1.php on line 4

    Warning: mysql_connect(): php_network_getaddresses: getaddrinfo failed: H�te inconnu. in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\ex1.php on line 4

    Warning: mysql_connect(): php_network_getaddresses: getaddrinfo failed: H�te inconnu. in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\ex1.php on line 4
    Database connection failed miserably: php_network_getaddresses: getaddrinfo failed: H�te inconnu.

    ردحذف
    الردود
    1. لديك خطأ في السطر 4 ولايمكنني معرفة السبب بدون مشاهدة الكود.

      حذف
    2. والمشكلة من الاتصال mysql_connect()

      حذف
  15. أزال أحد مشرفي المدونة هذا التعليق.

    ردحذف
  16. السلام عليكم
    اغلب المبرمجين يقومون بفتح الاتصال بقاعدة البيانات وغلقة في نفس اللحظة ما الغاية من ذلك ؟
    وما هي مشكلة فتح الاتصال بقاعدة البيانات عند تشغيل البرنامج وغاق الاتصال عند الخروج من البرنامج ؟

    ردحذف
    الردود
    1. لتفادي ظهور أخطاء في الاتصال بقاعدة البيانات.
      حيث أنه من المرجح ظهور خطأ في الاتصال بقاعدة البيانات في المرة الأولى التي يتم فيها الاتصال و هذا يعتمد على إعدادات خادم php أو إعدادات خادم الاستضافة.
      حيث أنه يمكن ضبط طريقة تشغيل و ايقاف بعض مزايا php لتوفير طاقة و جهد معالج الخادم أو الاستضافة.

      حذف
  17. السلام عليكم انا بعمل موقع بالوردبريس ومشترك في استضافة هوستينجر انا عملت داتابيز بدرجات الطلبة وعايز اعمل صفحة الطالب بيدخل ال id والباسورد والموقع يظهر درجاته ده مشروع التخرج بتاعي دورت كتير على جوجل لو في حد يفيددني بمعلومات هكون متشكر جدا

    ردحذف
  18. تظهر هذا لي
    Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in C:\xampp\htdocs\amitprograms\replac.php on line 10

    Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\xampp\htdocs\amitprograms\replac.php on line 13
    Database selection also failed miserably:
    هذا سطر الكود
    $db_select = mysqli_select_db("provinces",$db);
    if (!$db_select)
    {
    die("Database selection also failed miserably:". mysqli_error());
    }

    ردحذف
    الردود
    1. نحتاج مشاهدة الكود كاملاً لتصحيح المشكلة.

      حذف

  19. بقلي الغلط في السطر 3 اي عند بيانات الادخال
    هاذا الخطأ

    Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\xampp\htdocs\New folder\reg.php:3 Stack trace: #0 {main} thrown in C:\xampp\htdocs\New folder\reg.php on line 3

    ردحذف
    الردود
    1. نحتاج مشاهدة الكود كاملاً لتصحيح المشكلة.
      رسالة الخطأ لا تكفي اخي العزيز

      حذف
  20. اذا كنا نريد ندخل بيانات من المستخدم و نظهر ما تم اختياره هو كيف الحل

    ردحذف
  21. Fatal error: Uncaught mysqli_sql_exception: Access denied for user 'username'@'localhost' (using password: YES) in C:\xampp\htdocs\gh\connect.php:7 Stack trace: #0 C:\xampp\htdocs\gh\connect.php(7): mysqli_connect('localhost', 'username', 'password') #1 {main} thrown in C:\xampp\htdocs\gh\connect.php on line 7 يحدث لي خطأ دائما فالاتصال

    ردحذف