اذهب إلى المحتوى
  • 0

لدي مشكلة في عرض المهام في مشروع PHP

Abdelrahman Mostafa10

السؤال

كنت أعمل على مشروع To-do list بلغة PHP وعند تطوير ميزة تصفية المهام بناءًا على حالتها مثل قيد التنفيذ أو مكتملة وهكذا، وكتبت الكود التالي:

  public static function get($table, $where = null)
    {
        $queryStr = "SELECT * FROM {$table}";
        if(is_array($where)) {
            $queryStr .= " WHERE " . implode(' ', $where);
        }

        $query= self::$pdo->prepare($queryStr);
        return $query->fetchAll(\PDO::FETCH_OBJ);
    }

ولكن اختفت كل المهمام، فما المشكلة، أرفقت مجلد المشروع.

php.zip

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

المشكلة في طريقة إضافة الشرط (WHERE clause) إلى الاستعلام و ليست آمنة.

عند استخدام implode() سيتم إضافة الشروط دون علامات الاقتباس مما يجعل الاستعلام غير صالح. 

الحل هو استخدام طريقة أخرى لإضافة الشرط مثل:

$where = '1=1'; // دائما TRUE 
if(is_array($where_conditions)) {
  $where_parts = [];
  foreach($where_conditions as $field => $value) {
    $where_parts[] = "{$field} = '{$value}'"; 
  }
  $where .= ' AND ' . implode(' AND ', $where_parts);
}

$queryStr = "SELECT * FROM {$table} WHERE {$where}";

هذا التعديل يضيف تكوينًا صحيحًا للشرط في حالة وجود مصفوفة لتصفية المهام.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...