我想根据搜索栏中输入的关键字获取记录。
假设我的 SQL 表列中有以下 3 条记录
- 漂亮的 child 子。
- 动物园里美丽的兔子。
- 天然水。
现在,如果搜索查询包含 Beautiful
,它将返回前 2 条记录。
如果搜索查询包含Beautiful(anything)
,它将不会返回任何内容。
我也希望在这种情况下显示前 2 条记录,因为它具有与上面搜索查询中相同的单词beautiful
。
现在,我正在使用
SELECT * FROM table WHERE name LIKE '%value%' ORDER BY id ASC
是否有任何其他查询或方法可以实现此类结果?
最佳答案
SELECT * FROM table WHERE (name LIKE '%value1%') OR (name LIKE '%value2%') ORDER BY id ASC
等等
因此,您必须将搜索字符串拆分为单独的单词。
$str = yourinput;
$strarray = (explode(" ",$str));
$query = "SELECT * FROM table WHERE ";
Foreach($strarray as $key=>$value){
If($key > 0){
$query = $query . "OR";
}
$query = $query . " (name LIKE '%" . $value . "%') ";
}
$query = $query . "ORDER BY id ASC";
关于php - 使用 PHP MYSQL 搜索查询搜索搜索的每个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42859803/