具有多个LIKE的WHERE条件引用多行

时间:2016-01-08 04:35:39

标签: php mysql sql-like

我有一个html / php输入,让我$_POST['search_query']

我想按帖子标题或标签过滤结果。无论是什么,应该出现在结果表中。

我正在尝试此查询:

SELECT * FROM posts WHERE activado='1' AND (titulo LIKE '%".$_POST['search_query']."%')
                    OR (tag1 LIKE '%".$_POST['search_query']."%') 
                    OR (tag2 LIKE '%".$_POST['search_query']."%') 
                    OR (tag3 LIKE '%".$_POST['search_query']."%') 

它只过滤了“titulo”行,我也需要获取simillar标签行。

如果行是Titulo,Tag1,Tag2或Tag3,我希望输出带来任何simillar Rows。在这里,我们只获得了带有相似内容的titulo行。

我在这里缺少什么? 我打赌这是一个非常简单的改变。

2 个答案:

答案 0 :(得分:0)

您应该通过括号括起以下条件来更改WHERE条件

SELECT * FROM posts 
WHERE activado='1' 
AND titulo LIKE '%".$_POST['search_query']."%' 
AND ( tag1 LIKE '%".$_POST['search_query']."%' //notice grouping here
OR    tag2 LIKE '%".$_POST['search_query']."%'
OR    tag3 LIKE '%".$_POST['search_query']."%'); 

答案 1 :(得分:0)

请试试这个:

SELECT * FROM posts
WHERE activado='1'
AND ((titulo LIKE '%".$_POST['search_query']."%')
OR (tag1 LIKE '%".$_POST['search_query']."%')
OR (tag2 LIKE '%".$_POST['search_query']."%')
OR (tag3 LIKE '%".$_POST['search_query']."%') );