我正在尝试为我的搜索框实现自动完成功能。
我有一个带有书籍表的数据库,所以当用户开始在搜索框中输入内容时,我希望能够向他们显示一个建议框,其中包含前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;
}
此解决方案非常慢,需要知道如何加快查询速度。
有什么想法吗?
提前致谢。