У меня есть база данных продуктов MySQL с id, p_name (FULL TEXT), страной, компанией, ценой.Мне нужно сделать динамический поиск на сайте.сейчас у меня такая проблема, когда я запрашиваю результат, я должен ввести точное совпадение имени в базе данных.я пытался поставить%: query%, но когда я выполняю, результат пуст
Модель:
public function getSearchResult($query){
$params = [
'query' => $query,
];
// Prepare statement
$search = $this->db->row("SELECT id, p_name FROM product WHERE p_name LIKE :query", $params);
return $search;
}
Контроллер:
public function indexAction(){
$result = $this->model->getSearchResult($_POST['search']);
$vars = [
'result' => $result,
];
$this->view->render('Search', $this->vars + $vars);
}
Класс БД:
public function query($sql, $params = []){
$stmt = $this->db->prepare($sql);
if(!empty($params)){
foreach ($params as $key => $val) {
if (is_int($val)) {
$type = PDO::PARAM_INT;
} else {
$type = PDO::PARAM_STR;
}
$stmt->bindValue(':'.$key, $val, $type);
}
}
$stmt->execute();
return $stmt;
}
public function row($sql, $params = []){
$result = $this->query($sql, $params);
return $result->fetchAll(PDO::FETCH_ASSOC);
}