PHP学生反馈表单编辑页无法读取历史填报数据故障求助
问题原因
你当前的edit.php存在2个核心问题导致历史数据无法填充:
- 执行完查询后没有读取结果集,拿到对应fid的反馈数据
- 表单控件默认值设置规则错误:
<textarea>标签没有value属性,内容需要写在开闭标签中间- 下拉选择框
<select>需要给匹配当前值的<option>添加selected属性才会默认选中
修改方案
第一步:修改edit.php的查询逻辑
在你原有查询代码后新增读取单条数据的逻辑:
<?php include "includes/database.php"; $fid = intval($_GET['fid']); // 转成整数避免非法传参 $query = mysqli_query($db,"SELECT * FROM `feedback` WHERE `fid`= $fid "); // 新增:读取查询到的单条反馈数据 $row = mysqli_fetch_assoc($query); if(!$row) { die('无效的反馈记录ID'); } ?>
第二步:修改所有下拉选择框的代码
给每个option加选中判断,以OOP评分下拉为例,其他下拉(webr、databaser等)按相同逻辑修改:
<select class="form-control" id="exampleFormControlSelect1" name="oopr"> <option value="1" <?php if($row['oopR'] == 1) echo 'selected'; ?>>1</option> <option value="2" <?php if($row['oopR'] == 2) echo 'selected'; ?>>2</option> <option value="3" <?php if($row['oopR'] == 3) echo 'selected'; ?>>3</option> <option value="4" <?php if($row['oopR'] == 4) echo 'selected'; ?>>4</option> <option value="5" <?php if($row['oopR'] == 5) echo 'selected'; ?>>5</option> </select>
第三步:修改所有textarea的代码
删除value属性,把数据写到标签中间,以OOP评论textarea为例,其他textarea(webc、databasec等)按相同逻辑修改:
<textarea class="form-control" id="exampleFormControlTextarea1" rows="3" name="oopc"><?php echo htmlspecialchars($row['oopC']); ?></textarea>
其他优化建议
- editprocess.php重复引入了两次
includes/database.php,可删除其中一行重复代码 - 所有输出到HTML页面的内容用
htmlspecialchars转义,避免XSS漏洞 - 当前直接拼接SQL的写法存在SQL注入风险,后续优化建议更换为mysqli预处理语句
内容的提问来源于stack exchange,提问作者narin
相关产品推荐
相关产品推荐

