Я реализовал поиск автозаполнения ajax на своем веб-сайте с пользовательским интерфейсом jQuery, и он работает очень хорошо, но у меня проблема с выбором, которая не хочет работать.
Поле autocomplete_search_name в database
уже как FULLTEXT index
.
. select
ниже работает нормально в статическом режиме, и я хочу, чтобы поиск работал, с **
$stmt = $this->db->prepare("SELECT autocomplete_search_name as label, url as the_link FROM product WHERE status = 'active' AND MATCH(autocomplete_search_name) AGAINST('*psico*' IN BOOLEAN MODE) ORDER BY MATCH(autocomplete_search_name) AGAINST('*psico*') DESC LIMIT 10");
$stmt->execute();
$moddados = $stmt->fetchAll();
return $moddados;
однако, когда я начинаю динамически вставлять параметры с помощью PDO bindParam или кавычки PDO, как в примере ниже, выбор больше не работает.Я много исследовал, но не смог найти способ решить эту проблему.
$data['query'] = '*'.$data['query'].'*';
$stmt = $this->db->prepare("SELECT autocomplete_search_name as label, url as the_link FROM product WHERE status = 'active' AND MATCH(autocomplete_search_name) AGAINST(:query IN BOOLEAN MODE) ORDER BY MATCH(autocomplete_search_name) AGAINST(:query) DESC LIMIT 10");
$stmt->bindParam(':query', $data['query']);
$stmt->execute();
$moddados = $stmt->fetchAll();
return $moddados;
Я пробовал этот способ ниже, но он также не работает:
$stmt = $this->db->prepare("SELECT autocomplete_search_name as label, url as the_link FROM product WHERE status = 'active' AND MATCH(autocomplete_search_name) AGAINST(CONCAT('*', :query, '*') IN BOOLEAN MODE) ORDER BY MATCH(autocomplete_search_name) AGAINST(CONCAT('*', :query, '*')) DESC LIMIT 10");
$stmt->bindParam(':query', $data['query']);
$stmt->execute();
$moddados = $stmt->fetchAll();
return $moddados;
, а такжеэтот способ не сработал
$stmt = $this->db->prepare("SELECT autocomplete_search_name as label, url as the_link FROM product WHERE status = 'active' AND MATCH(autocomplete_search_name) AGAINST(':query' IN BOOLEAN MODE) ORDER BY MATCH(autocomplete_search_name) AGAINST(':query') DESC LIMIT 10");
$stmt->bindParam(':query', '*' . $data['query'] . '*');
$stmt->execute();
$moddados = $stmt->fetchAll();
return $moddados;