استعلام mysqli، LIKE و AND في نفس الاستعلام لا يعمل كما ينبغي

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

  •  22-07-2019
  •  | 
  •  

سؤال

هذا هو استعلامي، لا يهم إذا تم تعيين الموافقة على 0 أو 1، فسوف يمنحني جميع الصفوف على أي حال

SELECT * 
FROM `tutorials` 
WHERE tags LIKE '% php %' OR tags LIKE 'php %' OR tags LIKE '% php' OR tags = 'php' 
AND approved=1

أعتقد أن السبب هو غرفة العمليات ولكن قد أكون مخطئًا، إذا كان بإمكان أي شخص مساعدتي في هذا :)

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

المحلول

وحاول قوسين

SELECT * 
FROM `tutorials` 
WHERE   (       tags LIKE '% php %' 
            OR  tags LIKE 'php %' 
            OR  tags LIKE '% php' 
            OR  tags = 'php' 
        )
AND approved=1

نصائح أخرى

وأعتقد أنك في عداد المفقودين بعض نقطتين:

SELECT * 
FROM `tutorials` 
WHERE (tags LIKE '% php %' OR tags LIKE 'php %' OR tags LIKE '% php' OR tags = 'php')
AND approved=1

والسبب يجب أن تشمل كولون، لأن OR و AND مشغلي هي على نفس المستوى الأسبقية. عندما قمت بحذف كولون، سيتم تحليل الاستعلام الخاص بك على النحو التالي:

SELECT * 
FROM `tutorials` 
WHERE (tags LIKE '% php %' OR (tags LIKE 'php %' OR (tags LIKE '% php' OR (tags = 'php' 
AND approved=1))))

وخصوصا عند استخدام قوائم طويلة من OR و AND المشغلين في استعلام، فمن المستحسن استخدام نقطتين لجعل نيتك واضحة. للحصول على قائمة كاملة من أسبقية المعامل في الخلية (والذي هو عادة مشتركة بين اللهجات SQL أخرى)، انظر> وأ href = "http://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html "يختلط =" noreferrer نوفولو "> دليل الخلية .

لم أحصل على ما تريده بالضبطولكن قد يكون هذا هو الذي تبحث عنه

اختر من tutorials أين ( علامات مثل "٪ php٪" أو علامات مثل "php٪" أو علامات مثل "٪ php" أو علامات = "بي إتش بي" ) والموافقة = 1

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