Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从MySQL表中选择并显示州和各自的城市_Php_Mysql - Fatal编程技术网

Php 从MySQL表中选择并显示州和各自的城市

Php 从MySQL表中选择并显示州和各自的城市,php,mysql,Php,Mysql,我有一个包含两个字段的SQL表:城市和州。我想建立一个所有州和各个城市的简单列表,但直到现在还不能。我想要这样的东西: <ul> <li>New York <ul> <li>Albany</li> <li>Buffalo</li> <li>New York City</li> </ul> </li> <li>Ill

我有一个包含两个字段的SQL表:城市和州。我想建立一个所有州和各个城市的简单列表,但直到现在还不能。我想要这样的东西:

<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
}
?>

州可能会

$row['states']
城市

$row['cities']

您正在将州和城市提取到阵列中,因此应尝试打印这两个州和城市:

while($row = mysqli_fetch_array($result)){
    echo $row['cities']."<br/>";
    echo $row['states']."<br/>";
}
while($row=mysqli\u fetch\u数组($result)){
echo$row['cities']。“
”; echo$row['states']。“
”; }
但这仍然不足以给出所需的结果,因为查询没有按州对城市进行分组。但是对于php部分,这是您必须做的。
如果您需要sql方面的帮助,请告诉我:p

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

SELECT states,cities FROM table ORDER BY states, cities
我不确定你是否需要清晰的,除非你可能有重复的记录。这将给出按州排序的结果,以及在州内按城市排序的结果


您可以跟踪最后一个状态的循环,当它发生变化时,关闭最后一个状态的条目(
)。请确保不要在第一次执行此操作($previousState='')。启动新状态,输出第一个城市,并继续输出城市,直到状态再次更改。

您需要检查查询。它将展示各州和城市。你需要有任何州的id,或者类似的东西,才能知道哪个州是城市?你的表是什么样子的?是的,我有重复的记录。我将沿着这个方向尝试一些东西。