搜索/查询具有部分匹配的关键字的 mysql 数据库


Search/Querying a mysql database with a keyword with partial match being OK

public function search($search)
{
    global $pdo;
    $query = $pdo->prepare('SELECT * FROM items WHERE item_name = ?');
    $query->bindValue(1, $search);
    $query->execute();
    return $query->fetchAll();
}

如果我调用它,并说$searchcookie的函数。

在我的数据库中,我有

chocolate chip cookie
oatmeal cookie
cookie 

它只会返回cookie那么我如何修复我的查询,以便它返回所有部分匹配或包含 cookie 的item_name?谢谢。

为了完整起见,或者作为LIKE的替代品,您可以使用LOCATE()INSTR()

SELECT * FROM table WHERE LOCATE('cookie', item_name);

注意:如果您对性能感到好奇,这里有一些旧的基准测试。

你会用like

where item_name like '%cookie%'

如果要查找完整的单词匹配:

where concat(' ', item_name, ' ') like '% cookie %'