编辑图书信息时文本框不显示旧值,求排查代码问题
图书编辑表单无法填充原有数据的错误排查
我帮你仔细梳理了这段代码,找到了几个导致点击编辑后只显示空白文本框的核心问题:
SQL查询用了未初始化的变量,根本查不到对应记录
你通过$_GET['edit']拿到了要编辑的图书ID并存到了$id里,但后续查询数据库的时候,条件写的是WHERE BookNo='$BookNo'——这时候$BookNo还没有被赋值,相当于查了一个空的BookNo,自然找不到任何记录,也就没法填充数据。修正后的查询代码应该是:
$record = mysqli_query($db, "SELECT * FROM bookinfo WHERE BookNo='$id'");未初始化变量,查询失败时表单输出空值
如果因为某种原因(比如ID错误、数据库连接问题)查询不到记录,$BookNo、$ISBN这些变量就没有被赋值,直接在表单里echo它们就会输出空字符串,导致文本框空白。建议在代码开头先初始化这些变量:<?php $BookNo = $ISBN = $title = $author = $publisher = $status = $cost = ''; $update = false; if (isset($_GET['edit'])) { // 后续逻辑... } ?>HTML标签结构错误,可能导致渲染异常
你把<form>标签放在了if (isset($_GET['edit']))的判断里,但</form>却在判断外面。当没有edit参数时,页面会多出一个无匹配的</form>标签,虽然不一定直接导致数据不填充,但可能引发页面渲染问题。应该把</form>也移到判断块内:<?php if (isset($_GET['edit'])) { ?> <form method="post" action = "viewBook.php"> <!-- 表单内容 --> <?php if ($update == true): ?> <button class="btn" type="submit" name="update" style="background: #556B2F;" >update</button> <?php else: ?> <button class="btn" type="submit" name="save" >Save</button> <?php endif ?> </form> <?php } ?>
另外还要提醒你,当前代码存在SQL注入风险,直接把用户输入的$id拼到SQL语句里很危险。建议改用MySQLi预处理语句,比如:
$stmt = $db->prepare("SELECT * FROM bookinfo WHERE BookNo=?"); $stmt->bind_param("s", $id); $stmt->execute(); $record = $stmt->get_result();
内容的提问来源于stack exchange,提问作者Azaqi
相关产品推荐
相关产品推荐

