【发布时间】:2020-02-16 23:54:46
【问题描述】:
我有一个简单的 PHP/MySQL/Ajax 自动完成应用程序,它在用户输入时显示可用地址(就像谷歌地图一样)。
一旦用户开始添加属性编号,结果就会发生变化(例如 260 和 269 消失了)
如果用户添加额外的数字,则只有 1 个结果(数字 270-277 消失了)
这是我从数据库中获取数据的代码
$search_param = "%{$this->text}%";
$query = 'SELECT * FROM (SELECT * FROM '.$this->table.' WHERE address like ?) AS x LIMIT 5,5';
$stmt = $this->conn->prepare($query);
$stmt->bindParam(1,$search_param);
$stmt->execute();
然后将结果保存到数组中
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
extract($row);
$address_item = array(
'address' => $address
);
//Push the data
array_push($address_arr['data'], $address_item);
}
【问题讨论】:
-
检查结果后请去掉限制条件
-
请注意,SQL 结果集是 orderless 根据定义意思是
LIMIT 5,5没有确定性ORDER BY条件几乎是 meaningless.. 作为分页 / SQL 中的批处理总是需要确定性排序,没有例外.. -
...您也可以考虑使用
FULLTEXT索引和WHERE MATCH (...) AGAINST(....),因为WHERE LIKE '%..%'永远不能使用索引
标签: javascript php mysql ajax autocomplete