我有一个看起来像这样的查询(我知道它容易受到 sql 注入(inject)的攻击,它只是一个模板):
$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
最佳答案
看看 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 时可读性更高)
关于php - 在表单内从 SQL 访问信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4414071/