كولد فيوجن - cfquery لا ترد على البيانات الصحيحة [مغلقة]

StackOverflow https://stackoverflow.com/questions/608104

  •  03-07-2019
  •  | 
  •  

سؤال

أواجه صعوبة في معرفة لماذا عندما cfquery يعمل في قانون بلدي هو فقط العودة صف واحد عندما ينبغي أن تكون العودة ثلاثة صفوف.

في جميع الحالات تقريبا هذا cfquery تعود البيانات الصحيحة.واحد أو اثنين من المستخدمين cfquery يعود فقط من الصف 1 (من 3).وأغتنم الإخراج من تصحيح المعلومات التي كولد فيوجن يبصق و تشغيل هذا الاستعلام في الضفدع الصحيح يتم عرض النتائج.

ما يمكن أن يسبب cfquery و تود أن تكون النتائج مختلفة ؟ أحد الأعمدة أنا أرد هو تعريف المستخدم و ربما العمود يحتوي على بعض الأحرف الخاصة في هذا السبب والنتيجة أن لا يكون عاد ؟ أنا حقا الحيرة لا أحد هنا يعرف أي كولد فيوجن أن يساعدني حتى نفكر في هذا.حتى أنتقل إلى ذلك.

أنا البحث على شبكة الإنترنت ونحن نتكلم.

وأضاف:

<cfquery name="getInfo" datasource="#DSN#">
    SELECT
        u.user_no, u.username, u.description
    FROM
        user_info u
    WHERE
        u.parent = #session.user_no#
    ORDER BY 
        u.username ASC
</cfquery>

مرة أخرى, واحدة من عدد قليل من المستخدمين إرجاع صف واحد من ثلاثة على بقية يبدو أن عودة جميع الصحيحة resuts.

**** تحديث **** لا أحد يهتم ، ولكن اليوم فقط هذه المشكلة تم حلها!إذا كنت تريد أن تعرف ما كان سأخبرك.

تبين المختبر الذي تم اختبار هذا قطعة من التعليمات البرمجية (الذي ادعى أنها كانت المقاصة لها ذاكرة التخزين المؤقت!) لم واضحة لها ذاكرة التخزين المؤقت!كان لي يركض أحاول إصلاحه عندما كانت التغذية لي بعض B. S.بعد أن أخبرتها أن كان من المرجح المشكلة.حسنا, أنا لم تنفق الكثير من الوقت على ذلك.شكرا جميعا على إجابات عن cfqueryparam سوف تستخدم تلك من الآن فصاعدا في كولد فيوجن الترميز.

هتاف!

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

المحلول


دائما استخدام cfqueryparam حول المتغيرات في الاستفسارات الخاصة بك!

الآن هذه للخروج من الطريق, لا يوجد شيء في ذلك التعليمات البرمجية التي سوف تتسبب فقط في واحد من ثلاثة الصفوف التي يتم إرجاعها.

إذا المشكلة هو إما البيانات ذات الصلة أو في أي مكان آخر في التعليمات البرمجية.

إذا كنت على الفور بعد أن الاستعلام لا:

<cfdump var="#getInfo#"/><cfabort/>

هل تحصل على صف واحد أو ثلاثة الصفوف ؟

  • إذا كان صف واحد ، يشير ذلك إلى مشكلة في بيانات - أشك غير ascii 'الخاصة' شخصيات من شأنه أن يسبب هذا ، ولكن في محاولة العودة فقط عدد صحيح إلى اختبار أو حتى SELECT 1 ... - إذا كان هناك ثلاثة صفوف يمكنك الحصول على ثلاثة 1s.

  • إذا كان هناك ثلاثة صفوف هناك, يجب أن يكون في وقت لاحق بعض التعليمات البرمجية التي تسبب المشكلة ، لذلك نحن بحاجة إلى معرفة ما يحدث المقبلة أن تكون قادرة على مساعدة.

معنى ؟

نصائح أخرى

وأود أن استخدام cfqueryparam لتحديد نوع المتغير الذي يتم الدخول في الاستعلام الخاص بك.

فإنه لا يضر أن تكون محددة جدا مع استعلامات قاعدة البيانات و لقد صادفت مشاكل من قبل مع الاعداد الصحيحه التي يجري تقييمها السلاسل وبالتالي إرجاع نتيجة غير صحيحة مجموعات.

(المضافة (الرئيسي) مكافأة cfqueryparam هو دائما جيدة لمزيد من الحماية ضد هجمات حقن SQL)

أعتقد الخطأ في البيانات أو المدخلات الخاصة بك (الدورة مهلة غير صالح؟).

في الواقع ، لقد أبدا شهد <cfquery> نتيجة اختلاف من ما DB server سوف اقول لكم على وحدة التحكم.الأمر واردا أنني لا أعتبر هذا الاحتمال.

أقترح ما يلي: اختبار السيناريو:

<cfquery name="AllUsers" datasource="#DSN#>
  SELECT 
    p.user_no,
    COUNT(u.user_no) ChildCount
  FROM
    user_info p
    LEFT JOIN user_info u ON p.user_no = u.parent
  GROUP BY
    p.user_no
  ORDER BY
    COUNT(u.user_no)
</cfquery>

<cfdump var="#AllUsers#">

هناك سوف ترى بالضبط كم عدد الأطفال لكل مستخدم.

إذا كان يجعلك تشعر أكثر أمنا ، يمكنك تشغيل الحلقة و التحقق من النتائج بشكل فردي:

<cfloop query="AllUsers">
  <cfquery name="SingleUser" datasource="#DSN#">
    SELECT
      u.user_no, u.username, u.description
    FROM
      user_info u
    WHERE
      u.parent = #AllUsers.user_no#
  </cfquery>

  <cfif SingleUser.RecordCount neq AllUsers.ChildCount>
    <cfabort showerror="space-time rupture found for user #AllUsers.user_no#">
  </cfif>
</cfloop>

أراهن أن <cfabort> هو لم اصابته التي من شأنها أن تثبت أن <cfquery> كان أداء لا تشوبه شائبة و يجب أن تبحث في مكان آخر.

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