استعلام mysqli، LIKE و AND في نفس الاستعلام لا يعمل كما ينبغي
-
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