Mysql LIKE 查询与 WHERE 子句 - (InnoDB)



请告知我的查询,该查询运行没有错误。按名称搜索时,如果表中的活动 = 0,则不返回该行。

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

(建议更正(

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

你有一个额外的 WHERE 那里,可能(虽然我不这么认为?

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

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

select * from <table-name> where (name like '%$searchq%' or suburb like '%$searchq%' or town like '%$searchq%' or keyword like '%$searchq%' ) and active = 0;

您不会在 where 键入两次单词。

尝试在条件中使用括号,而不是两次 其中:

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(

最新更新