簡體   English   中英

數據不在MySQL的下拉框中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM