好吧,首先您需要将输入搜索查询分成单独的关键字。在 php 中,您可以执行以下操作:
$keywords = explode(' ', $searchQuery);
然后,使用查询中的AND
关键字来检索所需的行。
$query = "SELECT * FROM market WHERE fruit LIKE '%$keywords[0]%' AND country LIKE '%$keywords[1]%'";
由于有时关键字的顺序可能会颠倒,因此您也可以使用OR
运算符。
$query = "SELECT * FROM market WHERE (fruit LIKE '%$keywords[0]%' AND country LIKE '%$keywords[1]%') OR (fruit LIKE '%$keywords[1]%' AND country LIKE '%$keywords[0]%')";
如果您认为用户可能使用不同于 a 的分隔符,space
您可以使用正则表达式来确定是否存在任何非字母数字字符。然后,使用该字符作为分隔符并识别各个关键字。
判断一个字符是否是字母
[编辑]:
另一个简单的事情是,使用OR
MySQL 的语句并检查是否有任何一个条件匹配。无需展开查询。
$query = "SELECT * FROM market WHERE (fruit LIKE '%$query%' AND country LIKE '%$query%') OR (fruit LIKE '%$query%') OR (country LIKE '%$query%') ";
此查询将首先检查两个关键字是否都存在,然后检查各个关键字是否存在并相应地返回。