在表单内部访问SQL中的信息

时间:2010-12-10 23:00:33

标签: php mysql loops

我有一个看起来像这样的查询(我知道它容易受到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

1 个答案:

答案 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更具可读性