Я пытаюсь реализовать автозаполнение для моего окна поиска.
У меня есть база данных с таблицей книг, поэтому, когда пользователь начинает вводить текст в поле поиска, я хочу иметь возможность показать им окно с предложением первых 6 названий, которые соответствуют набираемым словам.
Я использовал Ajax для запроса PHP, который имеет следующий код:
$terms = explode( " ", $data->word );
$terminos = '';
foreach( $terms as $term ) {
if ( $term == '' || $term == ' ' || strlen($term)==0 ) continue;
if ( $terminos != '' ) $terminos .= " AND title LIKE '%$term%' ";
else $terminos .= " title LIKE '%$term%' ";
}
$pdo = MySQLUtil::getConnection();
$query = "SELECT title
FROM books
WHERE :terminos
LIMIT 6";
$stmt = $pdo->prepare($query);
$stmt->bindParam(':terminos', $terminos, PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($result) {
return $result;
} else {
return false;
}
Это решение очень медленное и нужно знать, как я могу ускорить запрос.
Есть идеи?
Заранее спасибо.
Задача ещё не решена.
Других решений пока нет …