Php 搜索多个关键字

Php 搜索多个关键字,php,Php,我有这个小php搜索脚本来帮助我搜索我的users表 例如: 如果我搜索约翰,我会得到结果 如果我用空格搜索John Doe两个单词,我不会得到任何结果。 即使用户名是John Doe。 我想知道这个脚本中是否有什么东西可以更改,以帮助我搜索多个关键字 以下是搜索代码: 欢迎您提供任何想法或解决方案。如果您按全名搜索,您需要为其添加一个条件 CONCAT(`first_name`,' ',`last_name`) LIKE '%{$keywords}%' OR 如果按全名搜索,则需要为其添加条

我有这个小php搜索脚本来帮助我搜索我的users表

例如:

如果我搜索约翰,我会得到结果 如果我用空格搜索John Doe两个单词,我不会得到任何结果。 即使用户名是John Doe。 我想知道这个脚本中是否有什么东西可以更改,以帮助我搜索多个关键字

以下是搜索代码:


欢迎您提供任何想法或解决方案。

如果您按全名搜索,您需要为其添加一个条件

CONCAT(`first_name`,' ',`last_name`) LIKE '%{$keywords}%' OR

如果按全名搜索,则需要为其添加条件

CONCAT(`first_name`,' ',`last_name`) LIKE '%{$keywords}%' OR

在执行站点的搜索功能时。Match-and-country比Like-sql语句更好。该字段必须设置为与字段上的术语全文匹配:

SELECT `id`,`username`,`first_name`,`last_name`,`unit`,`email`,`rent_own`,`city`,`zip`,`phone`,`joined`,`group_id` FROM `users` WHERE MATCH(`id`,`username`,`first_name`,`last_name`,`unit`,`email`,`rent_own`,`city`,`zip`,`phone`,`joined`,`group_id`) AGAINST('keywords')
您还可以使用IN BOOLEAN模式在sql语句中允许运算符。 例如。。。在布尔模式下,将first_name、last_name与'-John+Doe'匹配。。。 -减号表示任何东西都不能和“John”匹配 +单词必须出现在比赛中


还有许多其他操作符可供使用。在执行站点的搜索功能时,请参阅并进行说明。Match-and-country比Like-sql语句更好。该字段必须设置为与字段上的术语全文匹配:

SELECT `id`,`username`,`first_name`,`last_name`,`unit`,`email`,`rent_own`,`city`,`zip`,`phone`,`joined`,`group_id` FROM `users` WHERE MATCH(`id`,`username`,`first_name`,`last_name`,`unit`,`email`,`rent_own`,`city`,`zip`,`phone`,`joined`,`group_id`) AGAINST('keywords')
您还可以使用IN BOOLEAN模式在sql语句中允许运算符。 例如。。。在布尔模式下,将first_name、last_name与'-John+Doe'匹配。。。 -减号表示任何东西都不能和“John”匹配 +单词必须出现在比赛中



还有许多其他操作符可供使用。请参阅并解释

我的第一个想法是,您将John Doe作为一个查询字符串参数传递,该参数包含两个单词之间的空格%20。你能确认$keywords在你想要的时候是John Doe吗?不,我很确定你说的空间是%20是对的。有没有办法解决这个问题?确保$keywords=escape$_GET['keywords'];正在执行您认为可以执行的操作。分解您的关键字,并在每个数据库表行中搜索每个关键字,这样您就可以返回所有可能的数据。我不知道要求。但全文搜索在这里似乎很有用。我的第一个想法是,您将John Doe作为查询字符串参数传递,其中两个单词之间的空格为%20。你能确认$keywords在你想要的时候是John Doe吗?不,我很确定你说的空间是%20是对的。有没有办法解决这个问题?确保$keywords=escape$_GET['keywords'];正在执行您认为可以执行的操作。分解您的关键字,并在每个数据库表行中搜索每个关键字,这样您就可以返回所有可能的数据。我不知道要求。但是全文搜索在这里似乎很有用。OP询问的是用户名而不是名字和姓氏。@echo编辑您的问题,并提及姓氏和姓氏而不是用户名。@FuzzyTree还有一个问题。如果我想在不同的用户组中搜索用户,例如管理员管理员管理员…等等,如果我的组id是数字,我该怎么做呢。示例:Admin=1,版主=2如果我搜索Admin,则不会得到任何结果。@如果在搜索该关键字时要显示admins,您必须在组id上加入,并为管理员添加or条件column@FuzzyTree类似这样的内容:`` OP询问的是用户名,而不是名字和姓氏。@echo编辑您的问题,并提及姓氏和姓氏,而不是用户名。@FuzzyTree还有一个问题。如果我想在不同的用户组中搜索用户,例如管理员管理员管理员…等等,如果我的组id是数字,我该怎么做呢。示例:Admin=1,版主=2如果我搜索Admin没有结果。@echo如果你想在搜索该关键字时显示admins,你必须加入group_id并为Admin添加or条件column@FuzzyTree类似这样的东西:``