3 طرق للاتصال بـ MySQL باستخدام PHP مع أمثلة التعليمات البرمجية
للبدء في استخدام قاعدة بيانات MySQL، يجب عليك أولاً فهم كيفية الاتصال من برنامج PHP المخصص لديك (البرنامج النصي) إلى قاعدة بيانات MySQL ذاتها.
توضح هذه المقالة الطرق الثلاث التالية، بالإضافة إلى أمثلة تعليمات برمجية PHP المقابلة التي تشرح كيفية الاتصال بقاعدة البيانات الخاصة بك من PHP.
بالنسبة لجميع الأمثلة أدناه، سنقوم بالاتصال بقاعدة بيانات MySQL الموجودة. ملحوظة: كل ما تم شرحه هنا سيعمل أيضًا مع MariaDB، تمامًا مثل MySQL.
1. الاتصال بـ PHP باستخدام ملحق mysqli
*mysqli يعني تحسين MySQL
قم بإنشاء ملف mysqli.php التالي
Connect_error) ( die("خطأ: غير قادر على الاتصال: " . $conn->connect_error); ) echo "متصل بقاعدة البيانات.
"; $result = $conn->query("SELECT id FROM goroda"); echo "عدد الصفوف: $result->num_rows"; $result->إغلاق(); $conn->إغلاق(); ?> في الكود أعلاه:
متصل بقاعدة البيانات. عدد الخطوط: 6 2. الاتصال من PHP MySQL PDO Extension
*يرمز PDO إلى كائنات بيانات PHP
يقوم برنامج التشغيل PDO_MYSQL بتنفيذ واجهة PDO التي توفرها PHP للاتصال من برنامج PHP النصي الخاص بك بقاعدة بيانات MySQL.
قم بإنشاء ملف mysql-pdo.php التالي:
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); صدى "متصل بقاعدة البيانات.
"; $sql = "اختر المعرف من goroda"; اطبع "قائمة المعرفات:
"; foreach ($conn->query($sql) كـ $row) ( print $row["id"] . "
"; ) $conn = null; ) Catch(PDOException $err) ( echo "خطأ: غير قادر على الاتصال: " . $err->getMessage(); ) ?> فيما سبق:
متصل بقاعدة البيانات. معرف القائمة: 1 2 3 4 5 6 3. الاتصال من PHP باستخدام وظائف MySQL القديمة
استخدم هذه الطريقة فقط إذا كنت تستخدم إصدارًا أقدم من PHP ولا يمكنك الترقية إلى الإصدار الجديد لسبب ما. يوصى باستخدام الطريقة رقم 2 والطريقة رقم 3 الموضحة أعلاه بدلاً من هذه الطريقة. لقد قمت بتضمين هذه الطريقة كمرجع فقط وليس كتوصية للاستخدام.
لقد تم إهمال هذا الامتداد تحديدًا منذ PHP 5.5. ولكن اعتبارًا من PHP 7.0، لن يعمل هذا حتى منذ إزالته. منذ PHP 5.5، عند استخدام هذه الوظائف، سيؤدي ذلك إلى إنشاء خطأ E_DEPRECATED.
قم بإنشاء ملف mysql.php:
"; $result = mysql_query("SELECT id FROM goroda"); $row = mysql_fetch_row($result); echo "id 1: ", $row, "
\n"; mysql_ Close($conn); ?> في ما سبق:
متصل بقاعدة البيانات. المعرف 1: 1 هذه هي الطريقة التي يمكنك من خلالها الاتصال بـ MySQL. وأكرر، الأفضل استخدام الطريقتين الأوليين؛ يا
لتحقيق أقصى استفادة من قاعدة بيانات MySQL، من المهم فهم كيفية الاتصال من برنامج PHP مخصص إلى قاعدة بيانات MySQL.
يصف هذا البرنامج التعليمي الطرق الثلاث التالية بالإضافة إلى مثال برنامج PHP المطابق الذي سيشرح كيفية الاتصال باستخدام PHP بقاعدة بيانات.
للقيام بذلك، تحتاج إلى تثبيت حزمة PHP-MySQL.
استنادًا إلى توزيع RedHat بما في ذلك، استخدم yum لتثبيت PHP-MySQL كما هو موضح أدناه.
يم تثبيت php-mysql
اعتمادًا على نظامك، سنقوم بتثبيت أو تحديث التبعيات التالية أعلاه:
بمجرد تثبيت كل شيء، ستعرض صفحة phpinfo وحدة MySQL كما هو موضح أدناه:
بالنسبة لجميع الأمثلة أدناه، سنقوم بالاتصال بقاعدة بيانات MySQL الموجودة بالفعل. إذا كنت جديدًا في MySQL، فهذا مكان جيد للبدء: .
ملاحظة: كل ما هو موضح هنا سيعمل أيضًا مع MariaDB، تمامًا كما يعمل مع MySQL.
يشير MySQLi إلى MySQL Improved.
يرجى ملاحظة أنه في معظم التوزيعات (على سبيل المثال: CentOS)، يعد PHP-MySQLi بالفعل جزءًا من حزمة PHP-MySQL. بهذه الطريقة لن تضطر إلى البحث عن حزمة PHP-MySQLi وتثبيتها. كل ما عليك فعله هو تثبيت حزمة PHP-MySQL للحصول على ملحق Mysqli فعال على نظامك.
قم بإنشاء ملف mysqli.php التالي في DocumentRoot في Apache:
Connect_error) ( die("خطأ: غير قادر على الاتصال: " . $conn->connect_error); ) echo "جارٍ الاتصال بقاعدة البيانات.
"; $result = $conn->query("حدد اسم الموظف"); echo "عدد الصفوف: $result->num_rows"; $result->إغلاق(); $conn->إغلاق(); ?>
في ما سبق:
الاتصال بقاعدة البيانات. عدد الخطوط: 4
ملاحظة: إذا كنت تحاول الاتصال بقاعدة بيانات MySQL بعيدة، فيمكنك القيام بذلك لتجنب خطأ رفض اتصال المضيف: كيفية السماح لعميل MySQL بالاتصال بخادم MySQL بعيد.
يرمز PDO إلى كائنات بيانات PHP.
تطبق PDO_MYSQL واجهة PDO التي توفرها PHP لتوصيل برنامج بقاعدة بيانات MySQL.
في معظم توزيعات Linux (مثل CentOS وRedHat)، تكون حزمة PHP-PDO مضمنة بالفعل في حزمة PHP-MySQL. بهذه الطريقة لن تضطر إلى البحث عن حزمة PHP-PDO وتثبيتها. كل ما عليك فعله هو تثبيت حزمة PHP-MySQL للحصول على امتداد PDO_MYSQL PHP فعال على نظامك.
قم بإنشاء ملف MySQL-pdo.php التالي في Apache DocumentRoot الخاص بك:
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); صدى "الاتصال بقاعدة البيانات.
"; $sql = "اختر اسم الموظف"; اطبع "اسم الموظف:
"; foreach ($conn->query($sql) كـ $row) ( print $row["name"] . "
"; ) $conn = null; ) Catch(PDOException $err) ( echo "خطأ: غير قادر على الاتصال: " . $err->getMessage(); ) ?>
في ما سبق:
عندما تتصل بـ mysqli.php من متصفحك، سترى الإخراج التالي، مما يشير إلى أن PHP كان قادرًا على الاتصال بقاعدة بيانات MySQL وجلب البيانات.
الاتصال بقاعدة البيانات. اسم الموظف: سيتسلان ماريا أوليغ
استخدم هذه الطريقة فقط إذا كنت تستخدم إصدارًا أقدم من PHP ولا يمكنك التحديث إلى الإصدار الجديد لسبب ما.
هذا هو امتداد PHP 5.5 القديم. ولكن بدءًا من إصدار PHP 7.0، لن يعمل هذا منذ أن تمت إزالته.
اعتبارًا من PHP 5.5، عند استخدام هذه الوظائف، فإنها ستولد خطأ E_DEPRECATED.
قم بإنشاء ملف MySQL-legacy.php التالي ضمن Apache DocumentRoot:
"; $result = mysql_query("اختر الاسم من الموظف"); $row = mysql_fetch_row($result); echo "الموظف 1: ", $row, "
\n"; mysql_ Close($conn); ?>
في ما سبق:
عندما تتصل بـ MySQL-legacy.php من متصفحك، سترى الإخراج التالي، مما يشير إلى أن PHP كان قادرًا على الاتصال بقاعدة بيانات MySQL وجلب البيانات.
الاتصال بقاعدة البيانات. الموظف 1: أندري إكس
سنتحدث في هذه المقالة اليوم عن إنشاء اتصال بقاعدة بيانات وسنناقش الخيار الأفضل للاستخدام الإجرائي أو الموجه للكائنات. أولاً، دعونا نلقي نظرة على المستوى الذي نحن فيه، إذا كان هذا هو مستوى المبتدئين تمامًا، فإن نصيحتي، دون استثناء، هي البدء في استخدام النمط الإجرائي للاتصال بقاعدة البيانات. لقد كتبت سابقًا مقالًا عن هذا الموضوع على مدونتي؛ لمزيد من المعلومات حول الأسلوب الإجرائي للاتصال بقاعدة البيانات، اقرأ المقال: "كيفية الاتصال بـ MySQL باستخدام PHP". إذا كان لديك بالفعل بعض الخبرة في العمل بأسلوب إجرائي للاتصال بقاعدة بيانات، فمن المحتمل أنك، مثلي، قد أخذت مشاريعي وأجبرتهم على استخدام نهج موجه للكائنات.
بطريقة أو بأخرى، سننظر الآن في خطوات إنشاء فئة لإنشاء اتصال بقاعدة بيانات MySQL في PHP. سنحتاج إلى ملفين PHP، في ملف واحد سوف "نضع" فئة لإنشاء اتصال بقاعدة البيانات، وفي الثانية سنعمل مع هذه الفئة.
لنقم بإنشاء ملفين:
أعتقد أننا لم نعد أطفالًا بعد الآن ونعرف ما نحتاجه للعمل مع ملفات PHP. خادم الويب المثبت هو Apache وPHP وMySQL DBMS ويعرف مكان وضع هذه الملفات - (لأولئك الذين لا يعرفون أو نسوا).
أضع الملف الذي تم تخزين الفصل فيه في ملف منفصل وقم بتسميته بالتنسيق: class name.class.php وأعرف ما تم تخزينه في هذا الملف. عندما يكون هناك العديد من الفئات في المشروع، يمكن أن تضيع، لذلك أوصي بتسمية الملفات ذات الفئات بالتنسيق الموضح أعلاه.
ملف Database.class.php:
دعونا الآن نلقي نظرة على ما تم إنشاؤه في هذه الخطوة. باستخدام الكلمة الأساسية "فئة"، واسم الفئة - قاعدة البيانات والأقواس المتعرجة، قمنا بإنشاء نص الفئة. في الفئة التي تم إنشاؤها، قمنا بإنشاء خاصيتين، في $mConnect - حيث يتم تخزين نتيجة الاتصال بقاعدة البيانات و$mSelectDB - حيث يتم تخزين نتيجة تحديد قاعدة البيانات. ربما لاحظت الكلمات الرئيسية في كل خاصية - عامة وثابتة. عن ماذا يتحدثون أو ما الذي يتحدثون عنه؟ العام يعني أنه يمكن الوصول إلى الخاصية من خارج الفصل، والثابت يجعل من الممكن الوصول إلى الخاصية أو الاتصال بها دون إنشاء مثيل للفئة، وهو أمر مناسب في كثير من الأحيان في العمل.
لنضيف طريقة Connect() لإنشاء اتصال بقاعدة البيانات:
".الخلية خطأ()."
";exit(); return false; ) // إرجاع النتيجة return self::$mConnect; ) ) ?>تقوم وظيفة mysql_connect() بإنشاء اتصال بقاعدة البيانات وتخزين نتيجة التنفيذ في $mConnect. بعد ذلك يأتي التحقق من بنية IF: إذا لم يكن الاتصال ناجحًا، فاعرض رسالة خطأ... وإلا، فسوف يتجاهل PHP كتلة IF ويستمر في تحديد قاعدة البيانات. تقوم الدالة mysql_select_db() بتحديد اسم قاعدة البيانات، إذا كانت قاعدة البيانات المطلوبة غير موجودة في قاعدة البيانات، في هذه الحالة سيقوم البرنامج بإبلاغ المستخدم بوجود خطأ. إذا نجح كل شيء، فسيعود اتصال قاعدة البيانات.
أضف طريقة Close():
عذرًا، لم نتمكن من الاتصال بخادم MySQL
";exit(); return false; ) // حاول تحديد قاعدة بيانات self::$mSelectDB = mysql_select_db($name, self::$mConnect); // إذا لم يتم تحديد قاعدة البيانات، فاعرض رسالة خطأ.. إذا(!self::$mSelectDB) (صدى "".الخلية خطأ()."
";exit(); return false; ) // إرجاع النتيجة return self::$mConnect; ) // تغلق الطريقة الاتصال بقاعدة البيانات public static function Close() ( // إرجاع النتيجة return mysql_ Close(self: :$mConnect) )) ) ?>الطريقة التالية والأخيرة في هذه الفئة، Close()، تغلق الاتصال بقاعدة البيانات؛ وتغلق وظيفة mysql_ Close() الاتصال بخادم MySQL وترجع النتيجة.
ملف Index.php:
باستخدام الدالة Define()، قمنا بإنشاء ثوابت لتخزين معلمات اتصال قاعدة البيانات. يتضمن Require_once فئة DataBase الخاصة بنا في ملف Index.php.
دعونا نتذكر الكلمة الأساسية الثابتة التي تم استخدامها في فئة DataBase في خصائص وأساليب هذه الفئة. يمنحنا هذا القدرة على الوصول إلى خصائص وأساليب الفصل باستخدام "::" (نقطتين). تأخذ طريقة DataBase::Connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE) 4 معلمات - الثوابت التي تم إنشاؤها بواسطة وظيفة Define()، والتي تخزن معلومات حول الاتصال بقاعدة البيانات. إذا كان الاتصال ناجحًا، فستعيد لنا طريقة Connect() اتصال قاعدة البيانات. بعد ذلك، سنكون قادرين على العمل وتنفيذ الاستعلامات إلى قاعدة البيانات. وظيفة mysql_query () - تنفذ استعلامًا لقاعدة البيانات. تقوم الدالة mysql_fetch_assoc() بمعالجة سلسلة من نتائج الاستعلام وإرجاع مصفوفة ترابطية. يعرض إنشاء الصدى إصدار خادم MySQL. وأخيرًا، سيقوم الأسلوب DataBase::Close() بإغلاق الاتصال بقاعدة البيانات.
باستخدام لغة PHP...
إنشاء اتصال قاعدة بيانات في PHP بطرق مختلفة:
$conn=mysql_connect($db_hostname, $db_username, $db_password) أو يموت ("لا يوجد اتصال بالخادم");
mysql_select_db($db_database,$conn) أو يموت ("لا، لم يكن من الممكن الاتصال بقاعدة البيانات")؛
شرح المتغيرات أدناه.
يتم استخدام الوظائف التالية:
في الوقت نفسه، نتحقق باستمرار من الأخطاء بهذه الطريقة: أو نموت ("الخطأ كذا وكذا")؛ - تُترجم على أنها أو تموت مع خطأ كذا وكذا - للعثور على مكان الخطأ على الفور.
التكوين.php
// متغيرات الاتصال بقاعدة البيانات
$host = "المضيف المحلي"; /يستضيف
اسم المستخدم $ = "الجذر"; // كلمة المرور للاتصال بقاعدة البيانات
كلمة المرور $ = ""; // كلمة المرور للاتصال بقاعدة البيانات - يمكن أن تكون فارغة على الكمبيوتر المحلي.
$database_name = "my-dolgi"; // اسم قاعدة البيانات
// الطريقة القديمة للاتصال بقاعدة البيانات
mysql_connect($host, $username, $password) أو die("لا يمكن الاتصال وإنشاء اتصال");
// حدد قاعدة البيانات. إذا كان هناك خطأ، الإخراج
mysql_select_db($database_name) أو die(mysql_error());
Index.php
require_once "config.php";
$result = mysql_query("حدد الاسم، المال من Dolg ORDER BY Money DESC LIMIT 5") أو die(mysql_error());
";
بينما ($row = mysql_fetch_assoc($result)) (
";
}
mysql_free_result($result);
// أغلق الاتصال
mysql_Close();
هذه الطريقة:
التكوين.php
// اتصالات بقاعدة البيانات
$link = mysqli_connect("localhost"، "username"، "password"، "name-database"); // هنا نقوم بإدخال بياناتك مباشرة: اسم المستخدم وكلمة المرور واسم قاعدة البيانات، وعادة ما يكون الحقل الأول هو المضيف المحلي
// خطأ في اتصال الإخراج
إذا (!$رابط) (
صدى "خطأ في الاتصال بقاعدة البيانات. رمز الخطأ: " . mysqli_connect_error();
مخرج؛
}
يرجى ملاحظة - يتم استخدام mysqli في كل مكان، وليس mysql !!!
Index.php
require_once "config.php";
// تنفيذ الطلب. إذا كان هناك خطأ، نعرضه
إذا (النتيجة = mysqli_query(رابط $,"اختر الاسم، أموال من أمر الدين حسب حد تنازلي عن الأموال 5")) (
صدى "لمن أدين بالترتيب التنازلي:
";
// جلب نتائج الاستعلام
بينما ($الصف = mysqli_fetch_assoc((النتيجة)) (
صدى $row["Name"] . "بالديون". $row["المال"] . "روبل.
";
}
// تحرير الذاكرة المستخدمة
mysqli_free_result(نتيجة)؛
// أغلق الاتصال
mysqli_ Close(رابط $);
}
كما ترون، تغيرت بعض النقاط (بالخط المائل).
3) طريقة كائنية التوجه للاتصال بقاعدة بيانات MySQL - باستخدام الأساليب والفئات:
السلبيات: أكثر تعقيدًا وأقل عرضة للأخطاء.
الإيجابيات: الإيجاز والراحة للمبرمجين ذوي الخبرة.
$conn = new mysqli($db_hostname, $db_username, $db_password, $db_database);
إذا($conn->connect_errno)(
يموت($conn->connect_error);
) آخر (صدى "تم إنشاء الاتصال بقاعدة البيانات بنجاح"؛)
هنا، من حيث المبدأ، كل شيء بديهي:
التكوين.php
// اتصالات بقاعدة البيانات
$mysqli = new mysqli("localhost", "username", "password", "name-database"); // هنا نقوم بإدخال بياناتك مباشرة: اسم المستخدم وكلمة المرور واسم قاعدة البيانات، وعادة ما يكون الحقل الأول هو المضيف المحلي
// خطأ في اتصال الإخراج
إذا ($mysqli->connect_error) (
يموت ("خطأ في اتصال قاعدة البيانات: (" . $mysqli->connect_errno . ") " . mysqli_connect_error) ؛
}
يرجى ملاحظة - يتم استخدام mysqli في كل مكان، وليس mysql !!! وعلى عكس الطريقة السابقة، تظهر الأسهم "->"، والتي تشير إلى أن هذا هو نمط OOP.
Index.php
require_once "config.php";
// تنفيذ الطلب. إذا كان هناك خطأ، نعرضه
إذا (النتيجة = $ Mysqli->الاستعلام("اختر الاسم، أموال من أمر الدين حسب حد تنازلي عن الأموال 5")) (
صدى "لمن أدين بالترتيب التنازلي:
";
// جلب نتائج الاستعلام
بينما ($row = $result-> fetch_assoc()) {
صدى $row["Name"] . "بالديون". $row["المال"] . "روبل.
";
}
// تحرير الذاكرة المستخدمة
$النتيجة->إغلاق ();
// أغلق الاتصال
$Mysqli->إغلاق();
}
مهمتك هي العثور على الاختلافات.
عند الاتصال بقاعدة بيانات MySQL، يتم استخدام التعبيرات المعدة (باستخدام طريقة التحضير) ونتيجة لذلك، يكون هناك أمان أكبر ويزيد الأداء بشكل كبير.
ملف التكوينمن الطريقة السابقة! - نفس
Index.php
// أسلوب PDO للتواصل مع MySQL
إذا ($stmt = $mysqli->prepare("اختر الاسم، Voney من Dolg ORDER BY Money"< ? LIMIT 5")) {
$stmt->bind_param("i", $summa);
$المجموع = 100000؛
//بدء التنفيذ
$stmt->تنفيذ();
// الإعلان عن المتغيرات للقيم المعدة
$stmt->bind_result($col1, $col2);
صدى "لمن أدين بالترتيب التنازلي:
";
// جلب نتائج الاستعلام
بينما ($stmt->fetch()) (
صدى $col1 . "بالديون". $col2 . "روبل.
";
}
// تحرير الذاكرة المستخدمة
$stmt->إغلاق();
// أغلق الاتصال
$mysqli->إغلاق();
كما ترون، هذا أكثر تعقيدًا وتحتاج إلى دراسة شركة تنمية نفط عمان - وهذا موضوع منفصل.