English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدليل، ستتعلم كيفية الاتصال بمخدم MySQL باستخدام PHP.
للحفظ أو الوصول إلى بيانات قاعدة بيانات MySQL، يجب عليك أولاً الاتصال بمخدم قاعدة بيانات MySQL. يقدم PHP طريقتين مختلفتين للاتصال بمخدم MySQL:MySQLiو (MySQL) مُحسّنPDO(PHP Data Objects) توسيع.
على الرغم من أن توسيع PDO أقل قابلية للتنقل، ويدعم أكثر من عشرة عشرة قواعد بيانات مختلفة، ولكن كما يوحي الاسم، توسيع mysqli يدعم فقط قاعدة بيانات MySQL. ومع ذلك، يقدم توسيع mysqli طريقة سهلة للاتصال بمخدم قاعدة بيانات MySQL واستدعاء الاستعلامات فيها. كلا PDO و MySQLi يقدمان واجهة API موجهة إلى الكائن، ولكن MySQLi يقدم أيضًا واجهة API عملية، مما يجعلها أكثر سهولة للفهم بالنسبة للمبتدئين.
إشارة:في المقارنة مع توسيع PDO، يقدم توسيع mysqli لمحة سرعة وظيفية، لذا قد يكون الخيار الأفضل للاختيارات المحددة لـ MySQL.
في PHP، يمكنك تنفيذ هذه العملية باستخدام دالة mysqli_connect() بسهولة. جميع الاتصالات بين PHP ومخدم قاعدة بيانات MySQL تتم من خلال هذا الاتصال. إليك ثلاثة نماذج أساسية لنماذج MySQLi وPDO لاتصال MySQL:
$link = mysqli_connect("hostname", "username", "password", "database");
$mysqli = new mysqli("hostname", "username", "password", "database");
$pdo = new PDO("mysql:host=hostname;dbname=database", "username", "password");
في جملة اللغة الافتراضية، يحدد معامل hostname اسم الخادم (مثل localhost) أو عنوان IP لمخدم MySQL، بينما يحدد معامل username وpassword الأدلة للاستخدام في الاتصال بمخدم MySQL، ويحدد معامل database قاعدة البيانات الافتراضية التي سيتم استخدامها عند تنفيذ الاستعلامات.
يقدم هذا المثال كيفية استخدام mysqli (برنامجوالبرمجة الموجهة للأ象وسيتم الاتصال بمخدم قاعدة بيانات MySQL باستخدام توسيع PDO.
<?php /* محاولة اتصال بخادم MySQL. افترض أنك تقوم بتشغيل MySQL. خادم به إعدادات افتراضية (مستخدم بدون كلمة مرور "root") */ $link = mysqli_connect("localhost", "root", "); //تحقق من الاتصال if($link === false){ die("خطأ: لا يمكن الاتصال." . mysqli_connect_error()); } //طباعة معلومات الخادم echo "نجاح الاتصال. معلومات الخادم: " . mysqli_get_host_info($link); ؟؟
<?php /* محاولة اتصال بخادم MySQL. افترض أنك تقوم بتشغيل MySQL. خادم به إعدادات افتراضية (مستخدم بدون كلمة مرور "root") */ $mysqli = new mysqli("localhost", "root", "", "demo"); //تحقق من الاتصال if($mysqli === false){ die("خطأ: لا يمكن الاتصال." . $mysqli->connect_error); } //طباعة معلومات الخادم echo "نجح الاتصال. معلومات الخادم: " . $mysqli->host_info; ؟؟
<?php /* محاولة اتصال بخادم MySQL. افترض أنك تقوم بتشغيل MySQL. خادم به إعدادات افتراضية (مستخدم بدون كلمة مرور "root") */ try{ $pdo = new PDO("mysql:host=localhost", "root", ""); //ضبط نمط الأخطاء PDO على استثنائية $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //طباعة معلومات الخادم echo "نجح الاتصال. معلومات الخادم: " . $pdo->getAttribute(constant("PDO::ATTR_CONNECTION_STATUS")); } catch(PDOException $e){ die("خطأ: لا يمكن الاتصال. " . $e->getMessage()); } ؟؟
ملاحظة: اسم المستخدم الافتراضي لمخدم قاعدة بيانات MySQL هو root، وليس لديه كلمة مرور. ولكن، لتجنب اختراق قاعدة البيانات ووصول غير مصرح به، يجب عليك تعيين كلمة المرور لحساب MySQL.
إشارة:سيتم إعلام PDO عند حدوث خطأ في قاعدة البيانات عن طريق تعيين خاصية PDO::ATTR_ERRMODE إلى PDO::ERRMODE_EXCEPTION.
بعد اكتمال تنفيذ السكربت، سيتم إغلاق اتصال مع خادم قاعدة بيانات MySQL تلقائيًا. ولكن إذا كنت ترغب في إغلاقه مبكرًا، فما عليك سوى تنفيذ دالة PHP mysqli_close().
<?php /* محاولة اتصال بخادم MySQL. افترض أنك تقوم بتشغيل MySQL. خادم به إعدادات افتراضية (مستخدم بدون كلمة مرور "root")*/ $link = mysqli_connect("localhost", "root", "); //تحقق من الاتصال if($link === false){ die("خطأ: لا يمكن الاتصال." . mysqli_connect_error()); } //طباعة معلومات الخادم echo "نجاح الاتصال. معلومات الخادم: " . mysqli_get_host_info($link); //إغلاق الاتصال mysqli_close($link); ؟؟
<?php /* محاولة اتصال بخادم MySQL. افترض أنك تقوم بتشغيل MySQL. خادم به إعدادات افتراضية (مستخدم بدون كلمة مرور "root") */ $mysqli = new mysqli("localhost", "root", "", "demo"); //تحقق من الاتصال if($mysqli === false){ die("خطأ: لا يمكن الاتصال." . $mysqli->connect_error); } //طباعة معلومات الخادم echo "نجاح الاتصال. معلومات الخادم: " . $mysqli->host_info; //إغلاق الاتصال $mysqli->close(); ؟؟
<?php /* محاولة اتصال بخادم MySQL. افترض أنك تقوم بتشغيل MySQL. خادم به إعدادات افتراضية (مستخدم بدون كلمة مرور "root") */ try{ $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", ""); //ضبط نمط الأخطاء PDO على استثنائية $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //طباعة معلومات الخادم echo "نجاح الاتصال. معلومات الخادم: " . $pdo->getAttribute(constant("PDO::ATTR_CONNECTION_STATUS")); } catch(PDOException $e){ die("خطأ: لا يمكن الاتصال." . $e->getMessage()); } //إغلاق الاتصال unset($pdo); ؟؟