例如,如果我搜索'cat',我会在其中找到所有带有'cat'字样的标题,例如'cat in the hat'。
如果我输入'猫帽',我应该回来'戴着帽子的猫',但查询返回空,因为它正在寻找'猫帽'而忽略'帽子里的猫'。
我需要某种选择,用它搜索的任何单词查找所有标题,然后对下一个单词进行查找等等......然后......我不知道,某种大的东西。 ..
到目前为止,我正在尝试一些像:
$query = "SELECT title
FROM books
WHERE TITLE LIKE '%" . $search . "%' LIMIT 0,75;";
可能需要某种递归函数,它将搜索输入分解为字符串数组,并对每个字符串进行搜索然后合并它们。
想法?
答案 0 :(得分:1)
答案 1 :(得分:0)
$query = "SELECT title
FROM books
WHERE TITLE LIKE '%" . $search1 . "%' AND LIKE '%" . $search2 . "%' LIMIT 0,75;";
您需要为每个搜索字词添加AND子句。如果需要,您还可以添加OR。他们会给出不同的结果。或者会有更多的结果,而且当然会更具体。
答案 2 :(得分:0)
如果只是查询一个字段,您应该可以使用一组输入执行此操作。如果是多个字段,则必须使用地图。
我想指出的一点是,这看起来像是SQL注入的目标。将SQL查询连接在一个字符串中时请务必小心。必须对最终结果进行转义和/或参数化,以防止用户运行任意SQL。
答案 3 :(得分:0)
数目:
在正常符号和空格上拆分$ search,然后构建查询
缺陷: 完整的SQL文本搜索是更好的选择,它将导致更快的结果。另请注意,您当前的查询容易受到SQL注入攻击,请使用mysqli::real_escape_string来避免这种情况。
由于