簡體   English   中英

mysql在PHP中選擇不同的查詢

[英]mysql select distinct query in PHP

$sql = "SELECT DISTINCT Branch FROM student_main";
    $result = mysql_query($sql);
    $row_num = mysql_num_rows($result);
    $rows = mysql_fetch_array($result);
    echo "<select name='Branch'>";
    for($i=0;$i<=$row_num-1;$i++){
        echo "<option value='".$rows[$i]."'>".$rows[$i]."</option>";

    }
    echo "</select>";
    echo "<input type='submit' Value='submit' />";
    echo "</form>";

我正在嘗試使用上面的代碼為我的表單創建一個下拉列表。 但它不起作用。 “分支”列中有3個不同的值,但在下拉列表中,它只顯示一個值(第一個),后兩個顯示為空值。

但是當在echo $ row_num中時,它顯示3。
這意味着它取出了三行,但是為什么它沒有顯示在下拉列表中。

如果我在phpmyadmin中運行相同的查詢,它會顯示正確的答案,並返回3個不同的分支值。

您需要使用以下內容循環查詢:

    $sql = "SELECT DISTINCT Branch FROM student_main";
    $result = mysql_query($sql);
    echo "<select name='Branch'>";
    while($rows = mysql_fetch_array($result)){ // should probably use mysql_fetch_assoc()
        echo "<option value='".$rows['Branch']."'>".$rows['Branch']."</option>";
    }
    echo "</select>";
    echo "<input type='submit' Value='submit' />";
    echo "</form>";

你需要為每一行mysql_fetch_array() 該函數返回只有一行的關聯數組。 只需將它包含在echo語句上方的for循環中。

編輯: mysql_fetch_array()實際上返回一個具有關聯索引編號索引的數組(默認情況下)。 不過,您可以繼續以相同的方式使用它。

你應該做這樣的事情:

$sql = "SELECT DISTINCT Branch FROM student_main";
$result = mysql_query($sql);

echo "<select name='Branch'>";
while ($row = mysql_fetch_array($result)) {
    echo "<option value='".$row[0]."'>".$row[0]."</option>";
}
echo "</select>";

echo "<input type='submit' Value='submit' />";
echo "</form>";

mysql_fetch_array僅將當前數據集作為數組返回,並將內部指針向前移動。 您需要反復調用mysql_fetch_array來獲取所有結果。

while ($row = mysql_fetch_array($result)) {
    echo "<option value='".$row['Branch']."'>".$row['Branch']."</option>";
}

使用while循環的循環中存在問題:

while($rows=mysql_fetch_array($result)){ 

echo "<option value='".$rows[$i]."'>".$rows[$i]."</option>";

}

嘗試這個

您真正需要的是學習如何使用模板。
但似乎Stackoverflow絕對不是一個可以學習專業網站開發方式的地方。

先獲取您的數據

$select = $array();
$sql = "SELECT DISTINCT Branch FROM student_main";
$res = mysql_query($sql) or trigger_error(mysql_error().$sql);
while($row = mysql_fetch_array($res)) $select = $row[];

然后在模板中使用它

<form>
<select name='Branch'>
<? foreach($select as $row): ?>    
  <option value="<?=htmlspecialchars($row['Branch'])?>">
    <?=htmlspecialchars($row['Branch'])?>
  </option>
<? endforeach ?>    
</select>
<input type='submit' Value='submit' />
</form>

mysql_fetch_array只會返回第一行...

在這里查看詳細信息:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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