سؤال

بالنسبة لمشروع جديد أقوم به في 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() يفترض.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top