
W swoim modelu mam funkcję do obsługi wyszukiwarki, która przyjmuje tablicę słów do wyszukania w bazie. W całym modelu używam PDO i funkcji prepare() oraz execute() więc chciałbym również i w tym przypadku je zastosować, ponieważ zależy mi na bindValue().
Problem w tym, że zapytanie SELECT konstruuję w taki sposób:
$where = null; //pętla foreach do konstrukcji warunku(ów) WHERE foreach($keywords_array as $key => $keyword){ $where .= "((ads_advertisement.title LIKE '%$keyword%') OR (ads_advertisement.description LIKE '%$keyword%') OR (ads_advertisement.content LIKE '%$keyword%'))"; // szukam po title, description i content if($key !== ($total_keywords - 1)){ $where .= " AND "; // jesli było więcej niż jedno słowo, dodaję AND i zabawa od początku } } $query = "SELECT (...) WHERE $where"; //ogólna konstrukcja zapytania SELECT $result = $this->db->prepare($query); $this->select_Ads($result); // w funkcji select_Ads jest między innymi $result->execute(); return $this->ads; }
Mam nadzieję, że do tej pory wszystko jasne. Teraz chciałbym dla $keyword zastosować bindValue(), żeby mi jakiś życzliwy hakier nie próbował zrobić zastrzyku.
No i mam problem. Bo w miejsce '%$keyword%' nie mogę dać '%:keyword%'. I jestem w kropce

Pozdrawiam