使用部分匹配正常的关键字搜索/查询mysql数据库

时间:2013-07-10 02:47:14

标签: php mysql sql

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?感谢。

2 个答案:

答案 0 :(得分:3)

您可以使用like

where item_name like '%cookie%'

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

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

答案 1 :(得分:3)

为了完整性,或作为LIKE的替代方案,您可以使用LOCATE()INSTR()

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

注意:如果您对性能感到好奇,可以参考old benchmarks