سؤال

ولدي جدول الخلية الهوية، والاسم والجنس والدين عمر (التعداد ( 'هين'، 'لجنة حقوق الإنسان'، 'MUS)، الفئة (التعداد (' IND '،' AMR '،' SPA ") حيث آخر 2 هي نوع بيانات التعداد وقانون بلدي في دروبال كان

  $sql="SELECT * FROM {emp} WHERE age=".$age." and religion=".$rel." and category=".$categ;

  $result=db_query_range($sql,0,10);

   while($data=db_fetch_object($result))
    {
      print $data->id." ".$data->name."<br>";
    }

وأحصل على أي نتيجة أو خطأ. أحاول استعلام مختلفة مع كل حقل وكل ما يرام باستثناء باستخدام التعداد.

 for ex: $sql='SELECT * FROM {emp} WHERE religion="'.$rel.'"';

هل هناك أي مشكلة في استخدام نوع البيانات التعداد في دروبال

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

المحلول

والتعداد ليس شيئا أعتقد دروبال يمكن أن تجعل مع API المخطط، وهو ما كنت في معظم الحالات تريد استخدام لوحدات والاشياء. أيضا كنت تعاني من نقص في النهاية) في إشارة لذلك، ولكن أنا متأكد من أنك فعلت هذا الحق عندما قام الخاص الجدول.

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

وشيء آخر هو الطريقة التي بناء استفساراتكم هو على كبيرة NO NO ، أو كما انها غير آمنة للغاية. ما يجب عليك القيام به هو هذا:

db_query("SELECT ... '%s' ...", $var);
سوف

ودروبال استبدال٪ ق مع فار والتأكد من عدم وجود حقن SQL وأشياء سيئة أخرى. ٪ الصورة يشير فار سلسلة، استخدام٪ د ل[إينتس] وهناك عدد قليل من الآخرين لا أستطيع أن أتذكر الآن فقط. هل يمكن أن يكون العديد من العناصر النائبة مثل هذا، وسيتم إدراج في النظام، مثل الكثير من وظيفة ر.

نصائح أخرى

والتثنية Googletorps تقديم المشورة بشأن استخدام استعلامات معلمات (+1). وهذا لن يكون إلا أكثر أمنا، ولكن أيضا تجعل من السهل على الفور الأخطاء؛)

والاستعلام الأصلي لديك يفتقد بعض علامات الاقتباس حول الخاص بك (سلسلة) القيم المقارنة. وفيما يلي يجب أن تعمل (لاحظ علامات الاقتباس المفردة المضافة):

$sql = "SELECT * FROM {emp} WHERE age='" . $age . "' and religion='" . $rel . "' and category='" . $categ . "'";

والطريقة <م> الحق للقيام بذلك سيكون شيئا من هذا القبيل:

$sql = "SELECT * FROM {emp} WHERE age='%s' and religion='%s' and category='%s'";
$args = array($age, $rel, $categ);
$result = db_query_range($sql, $args ,0 , 10);
// ...
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top