2011-02-10 16 views
4
$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個不同的值,但在下拉列表中,它只顯示一個值(第一個值),接下來的兩個值顯示爲空白值。mysql在PHP中選擇不同的查詢

但是,當在echo $ row_num中,其顯示3.
這意味着它獲取三行,但爲什麼它不顯示在下拉列表中。

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

回答

5

你應該做這樣的事情:

$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>"; 
6

您需要爲每一行mysql_fetch_array()That function僅返回一個行的關聯數組。只需將它包含在echo回聲之上的for循環中即可。

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

+0

我認爲這一次獲取完整的數組。我錯了嗎 ?你能解釋一下嗎?謝謝 – hsinxh 2011-02-10 16:17:51

+0

它一次提取一行。你需要再次調用它來獲得另一行。 – 2011-02-10 16:21:49

7

您可以通過查詢使用下列需要循環:

$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>"; 
+0

如果我們想在滿足2個條件的情況下獲得多個DISTINCT值,我們如何在這裏修改sql命令。 (如mark = 50和grade = b) – Matthew 2013-10-26 06:21:17

3

mysql_fetch_array只返回當前數據集作爲一個數組,並提前移動內部指針。您需要重複呼叫mysql_fetch_array以獲得所有結果。

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

`$ rows [$ i]`不正確,我想你錯過了它。 – Prisoner 2011-02-10 15:44:18

+0

@Prisoner謝謝你,當你複製和粘貼:) – 2011-02-10 15:46:07

2

有使用while循環迴路中的問題:

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

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

} 

試試這個

1

mysql_fetch_array只會返回第一排...

詳情請參閱here :)

2

您真正需要的是學習如何使用模板。
但似乎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>