使用WHERE子句的Mysql LIKE查询-(InnoDB)

时间:2018-09-30 16:15:22

标签: mysql innodb

请在我的查询中提供建议,该查询不会出现错误。按名称搜索时,如果表中的Active = 0,则不返回该行。

但是,如果我按郊区搜索,尽管表中的Active = 0,仍返回该行。我试过不喜欢,但结果相同。这是WHERE子句在整个查询上运行的最佳解决方案。

(建议更正)

SELECT  *
    FROM  table name
    WHERE  Active = 1
      AND  (name LIKE '%$searchq%'
              OR  town LIKE '%$searchq%'
              OR  Keyword LIKE '%$searchq%'
           ) 

3 个答案:

答案 0 :(得分:0)

请尝试在不超过两次的情况下使用括号:

SELECT * FROM table 
WHERE 
(Name LIKE '%$searchq%' OR Town LIKE '%$searchq%' OR Suburb LIKE '%$searchq%' OR Keyword LIKE '%$searchq%') 
AND Active = 1

建议:

  1. 尝试在查询中不要直接使用变量以防止sql注入。
  2. 如果active是标志0或1,则可以在数据库中使用整数或布尔值,然后仅在查询中使用Active = 1。
  3. 我认为比较流行的是使用列名作为大写字母(例如number_of_people)

答案 1 :(得分:0)

您在那里有一个额外的位置,并且可能(尽管我不这么认为?)是优先事项:

SELECT * FROM table WHERE Active = '1' " AND ( Name LIKE '%$searchq%' OR Town LIKE '%$searchq%' OR Suburb LIKE '%$searchq%' OR Keyword' LIKE '%$searchq%' );

答案 2 :(得分:0)

查询中有一些错误。您应该纠正它

getter

您不会在两个地方输入单词。