同じクエリ内の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
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 (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演算子の長いリストを使用する場合は、意図を明確にするためにコロンを使用することをお勧めします。 MySQLの演算子の優先順位の完全なリスト(一般に他のSQL方言に共通)は、 MySQLマニュアル。
私はあなたが正確に欲しいものを手に入れませんでした。しかし、これはあなたが探しているものかもしれません
SELECT * FROM
tutorials
WHERE (タグLIKE '%php%' ORタグLIKE 'php%' ORタグLIKE '%php' OR tags = 'php' ) AND承認済み= 1
所属していません StackOverflow