从MySQL表中选择并显示状态和相应的城市

时间:2013-07-31 22:04:30

标签: php mysql

我有一个包含两个字段的SQL表:City和State。我想建立一个简单的所有州和所有城市的清单,但到目前为止还没有。我想要这样的东西:

<ul>
<li>New York
    <ul>
    <li>Albany</li>
    <li>Buffalo</li>
    <li>New York City</li>
    </ul>
</li>
<li>Illinois
    <ul>
    <li>Chicago</li>
    <li>Rockford</li>
    </ul>
</li>
</ul>

我做了以下选择,但它只列出了状态。无法找到显示各个城市的方法:

<?php
$result = mysqli_query($con,"SELECT DISTINCT states,cities FROM table ORDER BY states");
while($row = mysqli_fetch_array($result))
{
  // show here
}
?>

3 个答案:

答案 0 :(得分:0)

州可能会

$row['states']

城市

$row['cities']

答案 1 :(得分:0)

你正在向阵列中提取州和城市,因此你应该尝试打印它们:

while($row = mysqli_fetch_array($result)){
    echo $row['cities']."<br/>";
    echo $row['states']."<br/>";
}

但仍然不足以为您提供所需的结果,因为查询不是按州对城市进行分组。但对于php部分,这是你必须要做的。 如果你想帮助sql告诉我:p

答案 2 :(得分:0)

假设返回的每个DB记录包含一个州和一个城市,则一种方法是

SELECT states,cities FROM table ORDER BY states, cities

我不确定你需要DISTINCT,除非你有重复的记录。这应该给出按州和州内分类的结果,按城市排序。

您可以在看到的最后一个状态的循环中跟踪,当它发生变化时,关闭最后一个状态的条目(</ul></li>)。一定不要在第一个($ previousState =='')上这样做。启动新状态,输出第一个城市,并继续输出城市,直到状态再次发生变化。