我有一个看起来像这样的查询(我知道它容易受到sql注入,它只是一个模板):
$db = mysql_connect("host","un", "pw");
mysql_select_db("db", $db);
$sql = "SELECT *"
. " FROM Student" ;
$result = mysql_query($sql);
$students = mysql_fetch_assoc($result);
$numRows = mysql_num_rows($result);
然后我有这个表格:
<form name="form" id="form" method="post" action="page">
<select name="student" id="student">
<?
for ($i=0;$i<=$numRows;$i++){
echo "<option>" . $students['StudentID'] . "</option>";
}
?>
<option selected="selected">Please select a student</option>
</select>
这应该打印类似下拉框的内容,其中包含表格中的所有值。但是,我得到一个带有6个相同项目的下拉框,在这种情况下,我得到6个学生ID,但它们都是相同的ID。我在数据库中有六个学生,我想将它们作为一个选项显示出来。我做错了什么?
TIA
答案 0 :(得分:4)
查看mysql_fetch_assoc
的示例。它只会返回一个记录。为了获得所有这些,你必须在循环中使用它,例如:
$students = array();
while(($student = mysql_fetch_assoc($result))) {
$students[] = student;
}
以后:
<?php foreach($students as $student): ?>
<option><?php echo $student['StudentID']; ?></option>
<?php endforeach; ?>
或使用for
循环(但如果您不需要计数器则没有必要):
<?php for($i = 0; $i < numRows; $i++): ?>
<option><?php echo $students[$i]['StudentID']; ?></option>
<?php endfor; ?>
(注意:我使用alternative syntax for control structures混合HTML和PHP时,imho更具可读性