【发布时间】:2017-09-03 14:28:36
【问题描述】:
我正在尝试从包含大约 1000 万行的巨大数据库的 MySQL 数据库中显示各州的城市详细信息。我创建了以下工作正常的代码。但是,在显示时,由于 MySQL 中的数据库很大,因此需要花费大量时间。任何人都可以帮我编写嵌套循环的替代方案,因为嵌套循环似乎是一个需要大量时间的循环。此代码的目的是以 UL 和 LI 格式显示州名及其对应的城市。一种替代方法似乎按字母顺序对结果进行分页。欢迎任何其他建议:
这是我的代码:
DisplayFormat:
<ul>State1
<li>City1</li>
<li>City3</li>
<li>City3</li>
<li>City4</li>
</ul>
<ul>State2
<li>City1</li>
<li>City3</li>
<li>City3</li>
<li>City4</li>
</ul>
<ul>State3
<li>City1</li>
<li>City3</li>
<li>City3</li>
<li>City4</li>
</ul>
PHP CODE:
function cityListings(){
global $conn;
$state="SELECT DISTINCT state FROM members";
$query=mysqli_query($conn,$state);
while($row=mysqli_fetch_assoc($query))
{
$state=$row['state'];
?>
<div>
<ul>
<?php echo $state; ?>
<?php city($state); ?>
</ul>
</div>
<?php }
}
function city($state){
global $conn;
$city="SELECT DISTINCT city from members WHERE state='$state'";
$query=mysqli_query($conn,$city);
while($row=mysqli_fetch_assoc($query))
{
$city=$row['city'];
?>
<a href="city.php?city=<?php echo $city; ?>" style="text-decoration:none;">
<li style="color:blue;">
<?php echo $city; ?>
</li>
</a>
<?php }
}
【问题讨论】:
-
因为“状态”似乎在两个表中,您是否查看过 MySQL doc 只进行 一个 查询?
-
您是否使用关键字
DISTINCT on two columns或Group By two columns对SO 进行过任何研究?在发布问题之前,一定要疯狂地研究。我在这里闻到了重复的味道。请正确标记您的代码。 -
是的。在这里提出问题之前,我尝试了解 MySQL 文档,但坦率地说,我对此了解不多,因此在这个论坛中寻求建议 :-)
-
@mickmackusa:是的,我尝试过两列对我不起作用。它总是只显示一个结果,即状态,并且不提取城市的数据。
-
仅供参考:以任何标准衡量,1000 万行都不算大
标签: php mysql nested-loops