PDO操作SQL数据库无法保存/更新数据,请求排查解决
排查PDO操作数据库无法编辑数据的问题
我仔细梳理了你的代码,发现几个关键问题导致数据无法成功更新,逐个拆解说明:
1. 编辑ID的参数获取错误
在你的编辑处理代码里,你写了$bookID = $_GET['bookID'];,但看模态框的表单action是editbook.php?id=<?php echo $rec['bookID']; ?>——这里传递的参数名是id,不是bookID!
这会导致$bookID取不到有效值,UPDATE语句的WHERE bookID='$bookID'找不到对应记录,自然不会有数据更新。
修复方案:把获取ID的代码改成:
$bookID = $_GET['id'];
2. 下拉选择框(select)的value设置逻辑错误
你的模态框里select标签的写法存在问题:
<select class="form-control" name="txtStatus" value="<?php echo $rec['status']; ?>"> <option name="New">New</option> ... </select>
- select标签本身不支持通过
value属性设置选中项,需要给对应option添加selected属性 - option标签的
name属性无效,应该用value定义提交时传递的值
修复方案:修改select部分代码,根据当前记录的status标记对应option为选中:
<select class="form-control" name="txtStatus"> <option value="New" <?php echo $rec['status'] == 'New' ? 'selected' : ''; ?>>New</option> <option value="Old" <?php echo $rec['status'] == 'Old' ? 'selected' : ''; ?>>Old</option> <option value="Damage" <?php echo $rec['status'] == 'Damage' ? 'selected' : ''; ?>>Damage</option> <option value="Archive" <?php echo $rec['status'] == 'Archive' ? 'selected' : ''; ?>>Archive</option> <option value="Lost" <?php echo $rec['status'] == 'Lost' ? 'selected' : ''; ?>>Lost</option> </select>
这样既能正确显示当前状态,提交时也能传递正确的status值。
3. 模态框提交按钮标签不闭合
你模态框里的提交按钮写成了:
<button type="submit" name="edit" value="Save" class="btn btn-primary">Update</a>
这里用</a>闭合button标签,属于标签不匹配,可能导致表单提交行为异常。
修复方案:改成正确的闭合标签:
<button type="submit" name="edit" value="Save" class="btn btn-primary">Update</button>
4. 额外建议:避免SQL注入,使用PDO预处理语句
虽然这不是当前数据不更新的直接原因,但你的SQL语句直接拼接变量,存在严重的SQL注入风险。建议改成PDO预处理语句,更安全可靠:
// 替换原有的$sql和exec代码段 $sql = "UPDATE books SET isbn=?, title=?, author=?, publisher=?, copyright_year=?, status=? WHERE bookID=?"; $stmt = $db->prepare($sql); // 绑定参数并执行 $stmt->execute([$isbn, $title, $author, $publisher, $copyright_year, $status, $bookID]); $_SESSION['message'] = $stmt->rowCount() > 0 ? 'Book updated successfully' : 'No changes made or something went wrong';
用rowCount()可以更准确判断是否有记录被更新。
把这些问题修复后,你的编辑功能应该就能正常工作了。
内容的提问来源于stack exchange,提问作者CJ Pastor
相关产品推荐
相关产品推荐

