所以這是我的查詢,它無所謂,如果批准設置爲0或1它無論如何會給我所有的行mysqli查詢,LIKE和AND在同一個查詢不會像它應該
SELECT *
FROM `tutorials`
WHERE tags LIKE '% php %' OR tags LIKE 'php %' OR tags LIKE '% php' OR tags = 'php'
AND approved=1
我想這是因爲OR,但我可能是錯的,如果有人可以幫助我走出這個:)
所以這是我的查詢,它無所謂,如果批准設置爲0或1它無論如何會給我所有的行mysqli查詢,LIKE和AND在同一個查詢不會像它應該
SELECT *
FROM `tutorials`
WHERE tags LIKE '% php %' OR tags LIKE 'php %' OR tags LIKE '% php' OR tags = 'php'
AND approved=1
我想這是因爲OR,但我可能是錯的,如果有人可以幫助我走出這個:)
嘗試括號
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 (標籤LIKE '%PHP%' 的一個或類似的PHP%「標籤或標籤LIKE '%PHP' 或標記= 'PHP' )批准= 1
我認爲你缺少一些冒號:
SELECT *
FROM `tutorials`
WHERE (tags LIKE '% php %' OR tags LIKE 'php %' OR tags LIKE '% php' OR tags = 'php')
AND approved=1
原因你應該包括冒號,是因爲OR和AND運算符的優先級相同。當你省略了冒號,您的查詢將被解析爲:在查詢中使用和OR的長列表和運營商尤其是當
SELECT *
FROM `tutorials`
WHERE (tags LIKE '% php %' OR (tags LIKE 'php %' OR (tags LIKE '% php' OR (tags = 'php'
AND approved=1))))
,最好是使用冒號,使你的意圖明確。有關MySQL中運算符優先級的完整列表(其他SQL方言通常通用),請參閱the MySQL manual。