php - 在表单内从 SQL 访问信息

标签 php mysql loops

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

相关文章:

javascript - Jquery:无限循环和暂停

循环内的 JavaScript 闭包——简单实用的例子

php - 如何改进 if 算法

javascript - 具有多个值的 jQuery 序列化函数

php - 搜索和分页

mysql - 如何在 heroku 服务器日志上查看我的数据库事务查询(sql 查询)?

ruby-on-rails - 在Ruby/Rails中的.each循环的第一次迭代中检查的DRYest方法

php - Symfony2 在表单提交/验证后设置实体属性

javascript - WordPress 的动态行简码

php - 计算时差(日期时间)时的 strtotime 和奇怪的结果