0

我正在使用 jQuery UI 自动完成来显示我的数据库上可用的结果。我的网站用于房地产列表,我在搜索表单上名为“城市”的字段下使用它,因此如果我在同一城市下列出 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>
4

2 回答 2

3

您可以在查询中使用 DISTINCT 关键字从数据库中获取不同的值:

$query = "SELECT DISTINCT field_63 FROM jbd_joomd_type15 WHERE field_63 LIKE '%$text%' ORDER BY field_63 ASC";
于 2012-11-21T13:03:44.750 回答
0

正如 Ivan Huš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 仍然可以返回多个结果

于 2012-11-21T13:02:17.700 回答