例如,有人搜索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%");
我应该使用数组吗?如果是这样,我怎么能这样做?
答案 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
的事情不是很愉快。