اتصال PHP بـ MySQL ببساطة

اتصال PHP بـ MySQL ببساطة

في هذه المقالة ، سوف نتعلم كيفية توصيل PHP بـ MySQL وكيفية تنفيذ عمليات قاعدة البيانات المختلفة. يوجد في PHP عدة طرق للاتصال بخادم قاعدة بيانات MySQL. حتى الإصدار 5.5 من اللغة ، كانت إحدى الطرق الأكثر شيوعًا للاتصال بقاعدة بيانات MySQL هي استخدام امتداد MySQL ، والذي يوفر طريقة إجرائية للاتصال بخادم MySQL. ومع ذلك ، فقد تم إهمال هذا الامتداد منذ الإصدار 5.5 ولم يعد لدينا إمكانية الوصول إليه. يوجد حاليًا خياران يتضمنان PDO و MySQLi.

يوفر ملحق PDO ، الذي يرمز إلى PHP Data Objects ، أنواعًا مختلفة من خوادم قواعد البيانات جنبًا إلى جنب مع خادم MySQL. نظرًا لأن هذا الامتداد محمول ، إذا قررت تغيير خادم قاعدة البيانات في أي وقت ، فيمكنك القيام بذلك بسهولة.

من ناحية أخرى ، فإن امتداد MySQLi خاص بخادم MySQL ويوفر سرعة وأداء أفضل. أيضًا ، يسهل فهم امتداد MySQLi في البداية ، لأنه يسمح لكتابة استعلامات MySQL مباشرة. إذا كنت قد عملت مع قواعد بيانات MySQL من قبل ، فسيكون هذا الامتداد مألوفًا لك أكثر. ومع ذلك ، يوفر امتداد PDO تخطيطًا قويًا من قاعدة بيانات SQL إلى كود PHP ، مما يسمح لك بإجراء عمليات قاعدة البيانات دون الحاجة إلى معرفة تفاصيل SQL أو قاعدة البيانات. على المدى الطويل وللمشاريع الأكبر ، يمكن أن تؤدي PDO إلى توفير كبير في حجم الترميز وجهود التصحيح. في هذه المقالة ، سوف نستخدم امتداد MySQLi ونناقش الموضوعات التالية:

  • قم بإنشاء اتصال MySQL
  • إدراج وتحديث وحذف السجلات
  • استرجاع السجلات

قم بإنشاء اتصال MySQL

في هذا القسم ، سنتعلم كيفية الاتصال بخادم MySQL من نص PHP لإنشاء كائن الاتصال. ثم يتم استخدام كائن الاتصال هذا لتنفيذ الاستعلامات واسترداد الإخراج ومعالجة سجلات قاعدة البيانات. كما ذكرنا سابقًا ، سنستخدم امتداد MySQLi.

يوفر ملحق MySQLi طريقتين مختلفتين لإجراء عمليات قاعدة البيانات. يمكنك استخدامه بطريقة موضوعية أو إجرائية. في هذا الدليل ، مع الأخذ في الاعتبار أن الجمهور مبتدئ ، فإننا نستخدم طريقة إجرائية. للبدء ، نقوم بإنشاء ملف يسمى db_connect.php في جذر المستند بالمحتوى التالي:


<?php
$mysqli_link = mysqli_connect("{HOST_NAME}", "{DATABASE_USERNAME}", "{DATABASE_PASSWORD}", "{DATABASE_NAME}");
 
if (mysqli_connect_errno()) 
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}

لاحظ أننا استخدمنا عناصر نائبة لوظيفة mysqli_connect ويجب استبدالها بقيم فعلية.

فيما يلي نوضح كل قسم من هذه الأقسام بالتفصيل:

  • {HOST_NAME}

يشير هذا القسم إلى اسم مضيف خادم MySQL أو عنوان IP الخاص به. إذا قمت بتثبيت خادم MySQL مع PHP على نظامك ، فيجب عليك استخدام localhost أو 127.0.0.1. من ناحية أخرى ، إذا كنت تستخدم خادم MySQL مستضاف خارجيًا ، فيمكنك استخدام اسم المضيف مع عنوان IP المقابل.

  • {DATABASE_USERNAME}

يعرض هذا القسم اسم مستخدم مستخدم MySQL. هذه القيمة هي في الأساس اسم المستخدم الذي تستخدمه عند الاتصال بخادم MySQL.

  • {DATABASE_PASSWORD}

تمثل هذه القيمة أيضًا كلمة مرور مستخدم MySQL. في هذه الحالة ، يتم استخدام كلمة المرور للاتصال بخادم MySQL مع اسم المستخدم أعلاه.

  • {DATABASE_NAME}

هذه القيمة هي اسم قاعدة بيانات MySQL التي سنتصل بها. بمجرد إنشاء الاتصال ، نقوم بالاستعلام عن قاعدة البيانات للعملية التالية.

بعد ذلك ، نستبدل العناصر النائبة بقيم حقيقية. في هذه الحالة ، قمنا بتثبيت خادم MySQL محليًا ولدينا اسم مستخدم باسم tutsplus-demo-user وكلمة المرور tutsplus-demo-password. وبالتالي ، فإن المثال أعلاه هو كما يلي:


<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
 
if (mysqli_connect_errno()) 
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}

إذا قمت بتشغيل هذا المثال ، فإنه ينشئ رابط اتصال قاعدة البيانات ويخصصه لمتغير mysqli_link $ ، والذي يتم استخدامه بعد ذلك لتنفيذ أنواع مختلفة من عمليات قاعدة البيانات.

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

لدينا الآن اتصال ناجح بخادم MySQL وفي الأقسام التالية سوف ندرس كيفية تنفيذ أنواع مختلفة من الاستعلامات.

طريقة إدخال التسجيل

في القسم السابق ، درسنا كيفية استخدام وظيفة mysqli_connect لإعداد اتصال قاعدة بيانات مع خادم MySQL. في هذا القسم ، نذهب أبعد من ذلك ونفحص كيفية استخدام كائن الاتصال لتنفيذ استعلامات INSERT.

إذا كنت تريد تشغيل الأمثلة الواردة في هذه المقالة بنفسك ، فستحتاج إلى إنشاء جدول MySQL التالي في قاعدة البيانات الخاصة بك. سنستخدم هذا الجدول في جميع الأمثلة التالية.


CREATE TABLE `students` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `first_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `last_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

بعد ذلك ، نقوم بإنشاء جدول MySQL أعلاه باستخدام برنامج phpMyAdmin أو أداة سطر الأوامر.

ثم نقوم بإنشاء ملف db_insert.php بالمحتوى التالي. لا تنس استبدال معلمات الاتصال بمعلماتك:


<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
 
if (mysqli_connect_errno())
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}
 
$insert_query = "INSERT INTO students(`first_name`,`last_name`,`email`)
VALUES ('". mysqli_real_escape_string($mysqli_link, 'John') ."','". mysqli_real_escape_string($mysqli_link, 'Wood') ."','". mysqli_real_escape_string($mysqli_link, 'john.wood@tutsplus.com') ."')";
  
// run the insert query
If (mysqli_query($mysqli_link, $insert_query)) {
    echo 'Record inserted successfully.';
}
  
// close the db connection
mysqli_close($mysqli_link);
?>

أولاً ، نقوم بإنشاء اتصال قاعدة بيانات باستخدام وظيفة mysqli_connect كما ذكرنا سابقًا. ثم نقوم بإعداد استعلام الإدراج الذي سيتم تنفيذه بعد ذلك. لاحظ أننا استخدمنا الدالة mysqli_real_escape_string للهروب من السلسلة التي سيتم استخدامها كاستعلام إدراج. على وجه الخصوص ، يجب عليك استخدام هذه الوظيفة عند التعامل مع القيم التي تم تمريرها عبر متغيرات $ _POST لتجنب مخاطر الأمان من حقن SQL.

أخيرًا ، نستخدم الدالة mysqli_query ، والتي تأخذ وسيطين. الوسيطة الأولى هي ارتباط الاتصال النشط الذي سينفذ الاستعلام. الحجة الثانية هي استعلام MySQL الذي نريد تنفيذه. ترجع الدالة mysqli_query صحيحًا إذا تم تنفيذ الاستعلام بنجاح.

ثم نستخدم الدالة mysqli_close لإغلاق اتصال قاعدة البيانات النشط. الممارسة الصحيحة هي إغلاق اتصال قاعدة البيانات عند انتهاء عملية قاعدة البيانات. بعد ذلك ، نقوم بتشغيل البرنامج النصي وإدخال سجل في جدول الطلاب.

كيفية تحديث السجل

تحديث السجلات في قاعدة البيانات من خلال برنامج PHP النصي يشبه عملية الإدراج ، والفرق الوحيد هو أن الاستعلام يجب أن يكون استعلام تحديث بدلاً من استعلام إدراج. في المثال أعلاه ، نقوم بتحديث حقل الاسم_الأول كما في المثال التالي:


<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
 
if (mysqli_connect_errno())
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}
 
$update_query = "UPDATE students SET `first_name` = '". mysqli_real_escape_string($mysqli_link,'Johnny') ."' WHERE `email` = 'john.wood@tutsplus.com'";
  
// run the update query
If (mysqli_query($mysqli_link, $update_query)) {
    echo 'Record updated successfully.';
}
  
// close the db connection
mysqli_close($mysqli_link);
?>

بتشغيل هذا البرنامج النصي ، سيتم تحديث السجل المقابل في جدول الطلاب.

كيفية اختيار السجلات

في الأقسام السابقة ، تعلمنا كيفية إدراج السجلات وتحديثها في قاعدة البيانات باستخدام برنامج PHP النصي. في هذا القسم ، سنتعلم كيفية استرداد السجلات من قاعدة البيانات باستخدام أنواع مختلفة من وظائف MySQLi.

أولاً ، يجب أن نستخدم الدالة mysqli_query لتنفيذ استعلام التحديد. بمجرد تنفيذ استعلام التحديد بنجاح ، تقوم دالة mysqli_query بإرجاع الكائن الناتج الذي يمكننا من خلاله تحديد حلقة واسترداد السجلات التي تم إرجاعها ، عندما يتعلق الأمر بجلب وتحديد حلقة التكرار على سجلات الكائن الناتج من MySQLi ، هناك وظائف مختلفة يمكن استخدامها:

  • mysqli_fetch_all

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

  • mysqli_fetch_array

تتيح هذه الوظيفة استرداد صف واحد في كل مرة. لذلك ، نحتاج إلى استخدام حلقة while للتكرار على جميع السجلات. في هذه الحالة ، يمكننا تحديد ما إذا كنا نريد أن يكون الصف الناتج مصفوفة ترابطية أو مصفوفة رقمية أو كليهما.

  • mysqli_fetch_assoc

تجلب هذه الوظيفة الصف الناتج كصفيف واحد تلو الآخر ومصفوفة ترابطية.

  • mysqli_fetch_object

إنه يجلب الصف الناتج واحدًا تلو الآخر وكائنًا كائنًا.

يوجد أدناه مثال للتعرف على كيفية عمله:


<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
 
if (mysqli_connect_errno())
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}
 
$select_query = "SELECT * FROM students LIMIT 10";
$result = mysqli_query($mysqli_link, $select_query);
 
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    echo "First Name:" . $row['first_name'] . "<br/>";
    echo "Last Name:" . $row['last_name'] . "<br/>";
    echo "Email:" . $row['email'] . "<br/>";
    echo "<br/>";
}
 
// close the db connection
mysqli_close($mysqli_link);
?>

كما ترى ، استخدمنا الدالة mysqli_fetch_array جنبًا إلى جنب مع خيار MYSQLI_ASSOC كوسيطة ثانية ، ومن ثم تُرجع الصف الناتج كمصفوفة ترابطية. إذا كنت تستخدم الخيار MYSQLI_NUM ، فيمكنك الوصول إليه كصف [0] و $ row [1] $ والصف [2] $ في المثال أعلاه.

بدلاً من ذلك ، يمكنك استخدام دالة mysqli_fetch_object في المثال أعلاه والوصول إلى القيم ، كما هو موضح في مقتطف الشفرة التالي. للإيجاز ، إليك مقتطف رمز حلقة while:


…
…
while ($row = mysqli_fetch_object($result)) {
    echo "First Name:" . $row->first_name . "<br/>";
    echo "Last Name:" . $row->last_name . "<br/>";
    echo "Email:" . $row->email . "<br/>";
    echo "<br/>";
}
...
...

بهذه الطريقة يمكنك جلب وعرض السجلات من قاعدة بيانات MySQLi.

كيفية حذف السجلات

في هذا القسم ، سنتعلم كيفية تنفيذ استعلامات الحذف من نص PHP. يعد حذف السجلات من قاعدة بيانات تشغيلية أمرًا بسيطًا إلى حد ما ، حيث تقوم بإعداد وتنفيذ استعلام الحذف باستخدام وظيفة mysqli_query.

فيما يلي مثال على كيفية عملها:


<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
 
if (mysqli_connect_errno())
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}
 
$delete_query = "DELETE FROM students WHERE `email` = 'john.wood@tutsplus.com'";
  
// run the update query
If (mysqli_query($mysqli_link, $delete_query)) {
    echo 'Record deleted successfully.';
}
  
// close the db connection
mysqli_close($mysqli_link);
?>

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

كلمة أخيرة

في هذه المقالة ، درسنا كيفية توصيل PHP بقواعد بيانات MySQL باستخدام امتداد MySQLi. بهذه الطريقة ، من إعداد اتصال قاعدة البيانات إلى تنفيذ الاستعلامات المختلفة ، تم شرح جميع جوانب اتصال قاعدة البيانات تقريبًا.

ما هو رد فعلك؟

like

dislike

love

funny

angry

sad

wow