Php 当任何单词包含

Php 当任何单词包含,php,mysql,Php,Mysql,我是mysql数据库的新手。我有一个搜索栏,允许用户键入关键字和搜索 下面是我的查询示例。如果我键入usa或apple,它可以正常工作,但如果我同时键入usa-apple。结果是0。我想要的是,当用户键入“usa apple”时,返回包含来自美国的苹果的行(第一行) 首先,您需要将输入搜索查询分离为单个关键字。在php中,可以按如下方式执行此操作: $keywords = explode(' ', $searchQuery); 然后,在查询中使用和关键字检索所需的行 $query = "SEL

我是mysql数据库的新手。我有一个搜索栏,允许用户键入关键字和搜索

下面是我的查询示例。如果我键入
usa
apple
,它可以正常工作,但如果我同时键入
usa-apple
。结果是0。我想要的是,当用户键入“usa apple”时,返回包含来自美国的苹果的行(第一行)


首先,您需要将输入搜索查询分离为单个关键字。在php中,可以按如下方式执行此操作:

$keywords = explode(' ', $searchQuery);
然后,在查询中使用
关键字检索所需的行

$query = "SELECT * FROM market WHERE fruit LIKE '%$keywords[0]%' AND country LIKE '%$keywords[1]%'";
由于有时关键字的顺序可能会颠倒,因此也可以使用
运算符

$query = "SELECT * FROM market WHERE (fruit LIKE '%$keywords[0]%' AND country LIKE '%$keywords[1]%') OR (fruit LIKE '%$keywords[1]%' AND country LIKE '%$keywords[0]%')";
如果您认为用户可能使用不同的分隔符而不是
空格
,则可以使用正则表达式来确定是否存在任何非字母数字的字符。然后,将该字符用作分隔符并标识各个关键字

[编辑]:

另一件简单的事情是,使用MySQL的
语句,检查是否有任何一个条件匹配。不需要分解查询

$query = "SELECT * FROM market WHERE (fruit LIKE '%$query%' AND country LIKE '%$query%') OR (fruit LIKE '%$query%') OR (country LIKE '%$query%') ";

此查询将首先检查两个关键字是否都存在,然后检查单个关键字是否存在并相应返回。

如果用户键入apple usa,则数组将放置在错误的列中。如果用户键入apple usa,则数组将放置在错误的列中。我想使用循环来实现这一点,因为我们不知道在这种情况下用户将在ITI中键入多少单词,所以需要使用php执行添加检查,以根据关键字的数量确定分隔符和进程。通常,像这样的搜索模块需要相对较多的检查和条件。如果用户键入“我爱美国纽约香蕉”怎么办?如果我们将每个作品分成数组,查询将返回我,爱,美国,纽约,香蕉,这将搜索所有包括我,爱…请查看编辑的帖子。哇!thx很多,它真的很有帮助,我需要在这方面做更多的测试。泰!很高兴它有所帮助:)
$query = "SELECT * FROM market WHERE (fruit LIKE '%$query%' AND country LIKE '%$query%') OR (fruit LIKE '%$query%') OR (country LIKE '%$query%') ";