如何使用SQL搜索来搜索多个关键字

我有一个当前的SQL搜索查询,该查询允许用户输入关键字来搜索我的SQL数据库。目前,搜索将使用多个单词,但将显示任一关键字的所有结果。如果您输入“ Ford Mustang”,它将显示所有具有“ Ford”或“ Mustang”的结果,但是我需要它仅显示同时显示“ Ford”和“ Mustang”的结果。

我尝试过的是下面的

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;
}
charlesluo326 回答:如何使用SQL搜索来搜索多个关键字

也许这就是您要寻找的

  

从示例中选择*,例如“%mustang%ford%”

,

您可以编写查询

select * from tbl_products where name like "%Mustang%" and name like "%ford%";

PHP代码

//you may split search string like
$searchArray = explode(' ',$name);

//for loop for preparing the query
$query = 'SELECT * FROM tbl_products WHERE ';
$searchParams = array();
$conditions = [];
for($searchArray as $searchStr){
    $conditions[] = 'name like ?';
    $searchParams[] = "%$searchStr%";
}

//attach the conditions
$query .= implode(" and ",$conditions);

//execute the query 
$stmt = $this->pdo->prepare($query);

$stmt->execute($searchParams);

本文链接:https://www.f2er.com/3161183.html

大家都在问