【发布时间】:2017-01-06 13:24:58
【问题描述】:
如果使用单词之间的间隙,搜索查询显示零结果。例如:
数据库:
TABLE NAME - peoples
-----------------------------------
ID - forename - surname
-----------------------------------
1 Johny Depp
2 Kobe Bryant
3 Random Name
4 Mark Zuckerberg
etc
查询:
$sqlnames="SELECT id, forename, surname FROM peoples WHERE forename LIKE '%$search_keyword%' OR surname LIKE '%$search_keyword%' LIMIT 20";
例如,如果在输入中我输入:Johny,它会按预期显示:John Depp,或者如果我输入姓氏:Depp em>,它也按预期显示,但如果我输入全名:Johny Depp,它给出的结果为零。我该如何解决?
抱歉英语不好,感谢您的任何回答!
【问题讨论】:
-
也许可以使用
AND OR? -
我在 WHERE 中使用 OR。这很糟糕吗?
-
用括号试试,比如
SELECT id, forename, surname FROM peoples WHERE (forename LIKE '%$search_keyword%' OR surname LIKE '%$search_keyword%') LIMIT 20 -
@devpro 同无括号
-
您需要将搜索字符串拆分为单独的单词,并为每个单词/列组合的查询添加
OR。现在您得到 0 个结果,因为文本Johny Depp既没有出现在名字列中,也没有出现在姓氏列中。