Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php搜索mysql,如何在用户的搜索字符串中生成(和或不)功能?_Php_Mysql_Search - Fatal编程技术网

使用php搜索mysql,如何在用户的搜索字符串中生成(和或不)功能?

使用php搜索mysql,如何在用户的搜索字符串中生成(和或不)功能?,php,mysql,search,Php,Mysql,Search,我正在一个网站上做一个搜索功能,让用户搜索mysql数据库中的值 例如: 此表中有两种产品 一个描述值为焦炭罐330ml,另一个雪碧罐330ml 现在,当搜索这些项目时,假设用户输入can作为字符串。显示这两个项目是因为它们都包含can 如果用户输入焦炭,焦炭罐将被退回 现在想象一下,数据库中有每一罐苏打水,每一罐都是一种产品 像这样的搜索功能,会有点麻烦。假设一个用户只想要两种产品,它们是可乐罐和雪碧罐 他们需要搜索可乐、雪碧、罐头和330ml之类的东西 这应该只返回我的示例中使用的两个产品

我正在一个网站上做一个搜索功能,让用户搜索mysql数据库中的值

例如:

此表中有两种产品

一个描述值为焦炭罐330ml,另一个雪碧罐330ml

现在,当搜索这些项目时,假设用户输入can作为字符串。显示这两个项目是因为它们都包含can

如果用户输入焦炭,焦炭罐将被退回

现在想象一下,数据库中有每一罐苏打水,每一罐都是一种产品

像这样的搜索功能,会有点麻烦。假设一个用户只想要两种产品,它们是可乐罐和雪碧罐

他们需要搜索可乐、雪碧、罐头和330ml之类的东西

这应该只返回我的示例中使用的两个产品

我面临的问题不是这个。我的搜索功能运行起来与我的原始示例类似。我试图包含某种and,or,而不是功能,但还没有完全决定这一切应该如何解决

目前,搜索可乐罐将只返回包含可乐和罐的结果。但是如果我搜索了coke sprite can,则不会返回任何结果,因为没有包含字符串中使用的所有3个单词的结果

以下是查询:

$dataQuery = "
         SELECT *
         FROM `products`
         WHERE upper(`desc`)
         LIKE '%"
             . implode("%'
         AND upper(`desc`)
         LIKE '%",
             $keywords_array) 
             . "%'
         ORDER BY `desc`";
$keywords_array是根据用户输入的搜索字符串构建的数组,经过验证后,其代码如下:

$find = strtoupper($find); 
$find = strip_tags($find); 
$find = trim ($find);
$_SESSION['find'] = $find;
$keywords_array = explode(' ', $find);
$find是由用户输入的搜索字符串的post值设置的字符串

有没有人对实现我所解释的目标的好方法有什么想法

如果您需要任何附加代码或更好的解释,请直接询问

谢谢

您要查找的内容有一个限制,即默认最小字长为4个字符,因此如果无法编辑服务器配置,则无法搜索can


此外,它还有一个停止字策略,不会对出现在总数据中超过50%的字提供结果。

如果您在MyISAM表上,请使用全文索引,允许自然语言搜索。coke或sprite+可以键入语法。您好,谢谢!这似乎是答案。你能给我举个例子,说明我应该如何重新格式化我的查询以利用全文吗?@Black一个简单的例子:在布尔模式下,从products MATCH desc与“coke sprite 330ml”进行匹配