如何在mysql中搜索位于字符串中不同位置的不同单词

时间:2013-12-28 10:52:13

标签: php mysql

例如,有人搜索black shirt size 16,我们在包含black shirt for men and size is 17的mysql表中有一行(列名为shirt_title)。以下查询将搜索确切的单词,但不会搜索上述单词的不同组合。

$stmt = $dbh->prepare("SELECT shirt_title FROM product WHERE shirt_title LIKE ?");
$stmt->bindParam(1, "%$search_str%");

我应该使用数组吗?如果是这样,我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

一种方法是

$keywords = 'black shirt size 16';
$keywords = explode(' ', $keywords);

$queryStr = array();
foreach($keywords as $k => $keyword){
    $keywords[$k] = "%{$keyword}%";
    $queryStr[] = 'shirt_title LIKE ?';
}
$queryStr = implode(' AND ', $queryStr);

...

$stmt = $dbh->prepare("SELECT shirt_title FROM product WHERE {$queryStr}");
$stmt->execute($keywords);

虽然我认为必须有一种更有效的方式,因为我听到的关于LIKE的事情不是很愉快。