我试图将数据从MySQL表中获取到两个单独的下拉框中,但只有第一个下拉列表才能从数据库中获得城市列表,为什么第二个下拉列表没有显示城市列表。以下是PHP中的代码
<?php mysql_connect("localhost", "root", "") or die("Connection Failed");
mysql_select_db("flywest")or die("Connection Failed");
$query = "SELECT * FROM cities";
$result = mysql_query($query);
?>
Depart
<select name="formDepart" id="fromDepart">
<?php while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { ?>
<option value="<?php echo $line['city_name'];?>"> <?php echo $line['city_name'];?>
</option>
<?php } ?>
</select>
</p>
Arrive
<select name="formArrive" id="fromDepart">
<?php while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { ?>
<option value="<?php echo $line['city_name'];?>"> <?php echo $line['city_name'];?>
</option>
<?php } ?>
</select>
<p> 请出示我的错误。
发布于 2015-05-30 19:20:25
您的第一个while循环已经到达结果集的末尾,因此再次运行while是从结束开始的,无法更进一步。
您可以获取所有行并将其存储在变量中,然后使用该变量填充两个下拉列表。
<?php
$cities = array();
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
$cities[] = $line;
}
?>
<select name="formDepart" id="fromDepart">
<?php foreach ($cities as $line) { ?>
<option value="<?php echo $line['city_name'];?>"> <?php echo $line['city_name'];?>
</option>
<?php } ?>
</select>
</p>
Arrive
<select name="formArrive" id="fromDepart">
<?php foreach ($cities as $line) { ?>
<option value="<?php echo $line['city_name'];?>"> <?php echo $line['city_name'];?>
</option>
<?php } ?>
</select>这应该没问题的。
发布于 2015-05-30 19:22:01
问题很简单,您的第一个while循环消耗了查询的所有结果,因此第二个while循环没有什么可用的了。
因此,基本上第二个while循环没有需要处理的数据。
一种解决方案是在运行第二个while循环之前将结果集指针重置为结果集中的第一个条目。所以试试这个
<?php
mysql_connect("localhost", "root", "") or die("Connection Failed");
mysql_select_db("flywest")or die("Connection Failed");
$query = "SELECT * FROM cities";
$result = mysql_query($query);
?>
Depart
<select name="formDepart" id="fromDepart">
<?php
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
?>
<option value="<?php echo $line['city_name'];?>"> <?php echo $line['city_name'];?>
</option>
<?php
}
?>
</select>
</p>
Arrive
<select name="formArrive" id="fromDepart">
<?php
// <-- new line to reset the resultset pointer
mysql_data_seek($result,0);
// >-- new line
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { ?>
<option value="<?php echo $line['city_name'];?>"> <?php echo $line['city_name'];?>
</option>
<?php
}
?>
</select>
<p> 显然,我还应该指出,MYSQL_* PHP扩展现在是不推荐的,因此不应该使用。如果您正在编写新代码,请查看MYSQLI_*扩展或PDO扩展。
https://stackoverflow.com/questions/30550231
复制相似问题