请告知我的查询,该查询运行没有错误。按名称搜索时,如果表中的活动 = 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
建议:
- 尽量不要在查询中使用变量直接,以防止 sql 注入。
- 如果 active 是标志 0 或 1,则可以在数据库中使用整数或布尔值,然后在查询中使用 Active = 1。
- 我认为更流行的是使用列名称作为蛇大小写(例如number_of_people(