[英]Data not coming in dropdown box from MySQL
我正在嘗試將數據從MySQL表獲取到2個單獨的下拉框,但是只有第一個下拉列表從數據庫中獲取城市列表,為什么第二個下拉列表沒有顯示城市列表。 這是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>
請顯示我的錯誤。
您的第一個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>
這應該工作正常。
問題很簡單,您的第一個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擴展名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.