سؤال

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

إشعار] خطأ الطفل 10235 خطأ في تجزئة إشارة الخروج (11)

فعلت بعض البحث عن هذا ووجدت هذه الصفحة, ، لكنه لا يساعد حقًا. يبدو الاستعلام الذي أستخدمه شيئًا كهذا ،

SELECT DISTINCT(t1.PEREND), t2.ERATE, t2.EEXTEND, t2.EARNDED, t1.ENTRYSEQ
       FROM UPCHKD as t1 LEFT JOIN
            (SELECT EARNDED, PEREND, ERATE, EEXTEND, ENTRYSEQ FROM UPCHKD
                    WHERE (EARNDED LIKE '401K%'AND EARNDED NOT LIKE '401KL%') AND
                          EMPLOYEE = ? AND PEREND >= ? AND PEREND <= ?) as t2 ON t1.PEREND = t2.PEREND
       WHERE t1.PEREND >= ? AND t1.PEREND <= ? AND t1.EMPLOYEE = ? ORDER BY PEREND

وأنا أحصل على البيانات باستخدام حلقة الوقت مثل ما يلي ،

while($result = $sth->fetch(PDO::FETCH_ASSOC)) {
    //Deal with data here
}

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

هل كانت مفيدة؟

المحلول 2

يعمل أحد الحلول لهذه المشكلة عن طريق إضافة ما إذا كانت عبارات خالية إلى جميع أعمدة الإرجاع مثل ذلك ،

ISNULL(t2.ERATE, 0) as ERATE, ISNULL(t2.EEXTEND, 0) as EEXTEND, ISNULL(t2.EARNDED, '') as EARNDED

إذا تم العثور على خام الآن ، يتم إرجاعها كأصفار بدون خطأ. إنها ليست أجمل ، لكنها تعمل.

نصائح أخرى

أخطاء التجزئة ليست ممتعة للتعامل معها. أفضل إجابة يمكنني أن أقدمها لك هو وضع باستمرار die('okay'); المكالمات في أماكن مختلفة لمعرفة مدى كتل الترميز المختلفة التي تحصل عليها قبل أن تصطدم بالخطأ. (لن ترى أي شيء إذا كان هناك خطأ SEG).

من الجدير أيضًا محاولة ترقية كل شيء إلى أحدث الإصدارات: PHP ، PDO ، إلخ.

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