サイト ユーザーは検索フォームを使用して、製品のデータベースにクエリを実行します。入力したキーワードで、データベース内の製品のタイトルを検索します。
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);
ユーザーが単一のキーワードを入力した場合は検索が機能しますが、複数のキーワードが使用された場合、クエリは実行されません。
if: $keywords = 'Apple iPod'; $search = '%apple% AND itemTitle LIKE %ipod%';
したがって、準備されたステートメントは次のようになります。
「SELECT * FROM prodsTable WHERE itemTitle LIKE %apple% AND itemTitle LIKE %ipod%」
タイトルに「apple」と「ipod」の両方が含まれる 2 つの製品が返される場合、結果は返されません。
私は何を間違っていますか?