站点用户使用搜索表单来查询产品数据库。输入的关键字在数据库中搜索产品的标题。
public function startSearch($keywords){
$keywords = preg_split('/[\s]+/', $keywords);
$totalKeywords = count($keywords);
foreach($keywords as $key => $keyword){
$search .= '%'.$keyword.'%';
if($key != ($totalKeywords)-1){
$search .= ' AND itemTitle LIKE ';
}
}
$sql=$this->db->prepare("SELECT * FROM prodsTable WHERE itemTitle LIKE ?");
$sql->bindParam(1, $search);
$sql->execute ();
$sql->fetchALL(PDO::FETCH_ASSOC);
如果用户输入单个关键字,则搜索有效,但如果使用多个关键字,则不会执行查询。
如果:$keywords = '苹果 ipod'; $search = '%apple% AND itemTitle LIKE %ipod%';
所以准备好的语句应该是这样的:
“从 prodsTable 中选择 * 在哪里 itemTitle LIKE %apple% AND itemTitle LIKE %ipod%”
如果两个产品的标题中同时包含“apple”和“ipod”,则不会返回任何结果。
我究竟做错了什么?