مشكلة نطاق اتصال قاعدة بيانات فئة PHP
-
02-07-2019 - |
سؤال
بالنسبة لمشروع جديد أقوم به في PHP، قمت بإنشاء فئة SQLMethods للاتصال بقاعدة البيانات وتنفيذ الاستعلامات.الليلة كانت الليلة الأولى التي قمت بالفعل باختبارها (لقد كتبتها منذ أسبوع أو نحو ذلك ونسيت الأمر) وحدث خطأ غير متوقع:عندما كان يستدعي وظيفتي ExecuteQuery()، فإنه لن يستخدم قاعدة البيانات التي حددتها في المُنشئ.
المنشئ:
public function SQLMethods() {
$SQLConnection = mysql_connect($SQLDBAddress, $SQLUserName, $SQLPassword);
if (!$SQLConnection) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db($SQLDB, $SQLConnection);
}
الوظيفة المعنية:
public function ExecuteQuery($Query) {
mysql_query($Query, $SQLConnection) or die('Could not perform query: ' . mysql_error());
}
هل يرى أحد ما قد تكون عليه المشكلة؟هل يتم إغلاق الاتصال بعد اكتمال المنشئ؟
المحلول
يجب عليك الإعلان عن $SQLConnection في صفك، ويجب عليك الإشارة إليه باسم
$this->SQLConnection
وليس فقط $SQLConnection.
نصائح أخرى
$SQLConnection
غير موجود داخل ExecuteQuery
طريقة.
يمكنك إما تمريرها مباشرة كمعلمة إلى ExecuteQuery
, ، أو إضافة sqlConnection
خاصية الفئة التي تم تعيينها في المُنشئ ويمكن الوصول إليها باسم $this->sqlConnection
داخل أساليب صفك.
المتغير $SQLConnection
ExecuteQuery()
يتم إنشاء ما تحاول استخدامه ضمن نطاق آخر.(ال SQLMethods
وظيفة).
يتم إغلاق الاتصال عندما يقوم برنامج PHP النصي بعمله أو إذا قمت بإغلاقه بنفسك (إذا تم الاتصال داخل هذا البرنامج النصي)
يجب عليك تخطي $SQLConnection
متغير داخل ExecuteQuery
كما هو مذكور في وثائق php.net
إذا لم يتم تحديد معرف الرابط، فسيتم فتح الرابط الأخير بواسطة
mysql_connect()
يفترض.