mysql在PHP中选择不同的查询

hsi*_*nxh 4 php select distinct drop-down-menu

$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>";
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用上面的代码为我的表单创建一个下拉列表.但它不起作用."分支"列中有3个不同的值,但在下拉列表中,它只显示一个值(第一个),后两个显示为空值.

但是当在echo $ row_num中时,它显示3.
这意味着它获取三行,但是为什么它没有显示在下拉列表中.

如果我在phpmyadmin中运行相同的查询,它会显示正确的答案,并返回3个不同的分支值.

Pri*_*ner 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>";
Run Code Online (Sandbox Code Playgroud)


Sco*_* M. 6

你需要mysql_fetch_array()为每一行.该函数返回一个关联数组一个只有一行.只需将它包含在echo语句上方的for循环中.

edit:mysql_fetch_array()实际返回一个具有关联索引编号索引的数组(默认情况下).不过,您可以继续以相同的方式使用它.


aor*_*sik 6

你应该做这样的事情:

$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>";
Run Code Online (Sandbox Code Playgroud)