php - 如何在sql中搜索多个关键字
问题描述
我有一个当前的 SQL 搜索查询,允许用户输入关键字来搜索我的 SQL 数据库。目前,搜索将使用多个单词,但只有相同的顺序,即“Ford Mustang”将显示包含“Ford Mustang”的确切顺序的结果。如果用户输入“Mustang”或“Mustang Ford”,则不会显示任何结果。如何更改搜索查询以显示具有两个关键字但顺序不一定相同的结果?我已经搜索了这个网站和其他网站,发现了类似的问题,但找不到任何我能够解决的答案。
public function getProductByName($name){
$stmt = $this->pdo->prepare('SELECT * FROM tbl_products WHERE name LIKE :name');
$name = "%".$name."%";
$stmt->execute(array('name' => $name));
return $stmt;
}
有人提出以下建议,可以搜索任一关键字,但我需要搜索两个关键字,而不是按顺序搜索。
public function getProductByName($name){
$stmt = $this->pdo->prepare('SELECT * FROM tbl_products WHERE name REGEXP :names');
$names = "[[:<:]](" . str_replace(" ", "|", $name) . ")[[:>:]]";
$stmt->execute(array('names' => $names));
return $stmt;
}
解决方案
推荐阅读
- python - 在体积数据中绘制离线切片
- vba - 如何在 VBA 中结合间接引用和直接引用?
- git - 推送合并存储库时如何绕过推送限制?
- r - 如何用 R 中的给定值替换连续 NA 的第一个实例?
- angular - 如何使用对象数组以角度 4 获取表单数据
- javascript - 更改域时的 Cookie 迁移
- c# - Datagridview 搜索非 SQL 搜索按钮 c#
- javascript - 为什么我在 Javascript 中的 bash 脚本以相反的顺序执行?
- scala - 从 S3 上的多个目录创建 spark 数据框
- node.js - 节点 + 反应 + heroku,节点路由 404(未找到)