这里是我的表...在循环中阻止PHP中的MySQL查询? (使用一个替代)
Locations
__________________________________________________________
ID Location Region Country
1 Newmarket Ontario Canada
2 Barrie Ontario Canada
3 New York City New York US
4 Buffalo New York US
5 Vancouver British Columbia Canada
Regions
__________________________________________________________
ID Region Country
1 Ontario Canada
2 New York US
3 British Columbia Canada
Countries
__________________________________________________________
ID Country
1 Canada
2 US
表是比这更大,我试图列表加载到可扩展列表是这样的...
造型是没有问题的,我已经有整理出来了。我只是试图在一个快速的MySQL查询中加载所有这些信息。这是我目前在PHP中所用的,并且这些while循环需要大量的查询。 (与我的桌子的大小)
<div id="listContainer">
<ul id="expList">
<?php
$countries = $conn->query("SELECT * FROM countries ORDER BY country ASC");
while($crow = mysqli_fetch_array($countries))
{
$cname = $crow['country'];
$regions = $conn->query("SELECT * FROM regions WHERE country = '$cname' ORDER BY region ASC")
?>
<li class="country">
<?php echo $cname; ?>
<ul class="undercountry">
<?php
while($rrow = mysqli_fetch_array($regions))
{
echo "<li>";
$rname = $rrow['region'];
echo $rname;
?>
<ul>
<?php
$locations = $conn->query("SELECT * FROM locations WHERE region = '$rname' AND country = '$cname' ORDER BY location ASC");
while($lrow = mysqli_fetch_array($locations)){
$lname = $lrow['location'];
echo $lname;
}
?>
</ul>
<?php
echo "</li>";
}
?>
</ul>
</li>
<?php
}
?>
</ul>
</div>
有没有办法做到这一点?只使用位置表和组是可以的,但我不擅长编写选择查询。
您的位置表中已经有该国家和地区。你为什么不使用一张表,而不是其他表中的冗余信息? – 2013-05-12 19:27:04
我知道有这样的桌子似乎很奇怪,但我需要它们用于其他用途。 – TJE 2013-05-12 19:36:44