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