同じクエリ内の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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top