我正在使用jQuery UI Autocomplete来显示我的数据库上的结果。我的网站是用于房地产列表,我在我的搜索表单上的“城市”字段下使用它,所以如果我在同一个城市下列出500个房产,我的字段将显示该城市的名称500次。
有没有办法阻止这个,所以相同的结果只能显示一次?
这是我的PHP文件:
<?php
$mysqli = new mysqli('localhost', 'aliicomb_joombd', 'xxxxxxxx', 'aliicomb_joombd');
$text = $mysqli->real_escape_string($_GET['term']);
$query = "SELECT field_63 FROM jbd_joomd_type15 WHERE field_63 LIKE '%$text%' ORDER BY field_63 ASC";
$result = $mysqli->query($query);
$json = '[';
$first = true;
while($row = $result->fetch_assoc())
{
if (!$first) { $json .= ','; } else { $first = false; }
$json .= '{"value":"'.$row['field_63'].'"}';
}
$json .= ']';
echo $json;
?>
我的Javascript:
<script type="text/javascript">
$(document).ready(function()
{
$('#field_63').autocomplete(
{
source: "city.php",
minLength: 3
});
});
</script>
答案 0 :(得分:3)
您可以在查询中使用DISTINCT关键字从DB中获取不同的值:
$query = "SELECT DISTINCT field_63 FROM jbd_joomd_type15 WHERE field_63 LIKE '%$text%' ORDER BY field_63 ASC";
答案 1 :(得分:0)
正如IvanHušnjak建议你可以试试
$query = "SELECT DISTINCT field_63 FROM jbd_joomd_type15 WHERE field_63 LIKE '%$text%' ORDER BY field_63 ASC";
或
$query = "SELECT TOP 1 field_63 FROM jbd_joomd_type15 WHERE field_63 LIKE '%$text%' ORDER BY field_63 ASC";
只返回数据库中的1个结果
请注意,如果有多行,其中field_63就像$ text
,那么DISTINCT仍然可以返回多个结果