PHP更新功能失效:修改表单值后仍保存旧值求助
解决PHP表单更新后仍保存旧值的问题
先看你给出的代码片段,我发现几个可能的问题,咱们一步步排查:
1. 先修正明显的拼写错误
你input的id写成了toal_fees(少了一个字母t),虽然这不一定直接导致保存失败,但可能会影响关联的JS函数show_record的执行,先把id改成正确的total_fees:
<input type="text" class="input_text" name="total_fees" id="total_fees" onblur="show_record(this.value,1)" value="<?php if($_POST['total_fees']) echo $_POST['total_fees']; else echo $row['total_fees'];?>" />
2. 检查后端更新逻辑(核心问题)
你的前端代码只是正确显示了提交的POST值或者数据库旧值,但如果后端没有把POST过来的total_fees写入数据库,那刷新页面后自然还是会读取旧的$row['total_fees']。
你需要确认处理表单提交的PHP代码里,是否有类似这样的更新语句(记得做参数绑定防止SQL注入):
// 示例:MySQLi方式更新数据库 $updateQuery = "UPDATE your_table_name SET total_fees = ? WHERE your_primary_key = ?"; $stmt = $conn->prepare($updateQuery); // 根据你的字段类型调整参数类型,比如"s"是字符串,"i"是整数 $stmt->bind_param("si", $_POST['total_fees'], $yourRecordId); $stmt->execute();
如果没有这段逻辑,或者逻辑里有错误(比如主键匹配错误、字段名写错),数据库里的值根本不会更新,前端自然一直显示旧数据。
3. 确认POST数据是否正确接收
可以在处理提交的PHP代码开头加一段调试代码,看看是否真的收到了新值:
var_dump($_POST['total_fees']); // 输出收到的POST值,测试完记得删掉
如果输出的是你输入的新值,说明前端提交没问题,问题出在数据库更新;如果输出的是旧值或者空,那要检查表单是否用了method="post"、有没有其他JS阻止了表单提交。
4. 排除缓存问题
有时候浏览器会缓存页面,你可以按Ctrl+F5强制刷新页面,或者在PHP页面开头加禁止缓存的头:
header("Cache-Control: no-cache, no-store, must-revalidate"); header("Pragma: no-cache"); header("Expires: 0");
内容的提问来源于stack exchange,提问作者kiran
相关产品推荐
相关产品推荐

