Abdelrahman Mostafa10 نشر 12 ديسمبر 2023 أرسل تقرير نشر 12 ديسمبر 2023 كنت أعمل على مشروع 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 اقتباس
0 Khaled Osama3 نشر 12 ديسمبر 2023 أرسل تقرير نشر 12 ديسمبر 2023 المشكلة في طريقة إضافة الشرط (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}"; هذا التعديل يضيف تكوينًا صحيحًا للشرط في حالة وجود مصفوفة لتصفية المهام. اقتباس
السؤال
Abdelrahman Mostafa10
كنت أعمل على مشروع To-do list بلغة PHP وعند تطوير ميزة تصفية المهام بناءًا على حالتها مثل قيد التنفيذ أو مكتملة وهكذا، وكتبت الكود التالي:
ولكن اختفت كل المهمام، فما المشكلة، أرفقت مجلد المشروع.
php.zip
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.