繁体   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