You need to enable JavaScript to run this app. 使用PHP UPDATE语句更新MySQL记录无生效 数据未修改问题求助
优惠活动
大模型
产品
解决方案
定价
更多

使用PHP UPDATE语句更新MySQL记录无生效 数据未修改问题求助

核心问题原因
  • 更新处理脚本actions/update-commit.php中,UPDATE语句WHERE条件用到的$c_id变量未声明赋值,也没有从请求中获取记录ID,导致UPDATE语句匹配不到任何要修改的记录,自然不会触发数据更新。
  • 详情页的编辑表单没有将当前记录的ID作为参数传递给更新接口,即使更新脚本想要获取ID也没有来源。
  • 可选优化问题:当前预处理参数绑定中,length和min_time为数值类型,却使用了字符串s绑定,同时代码缺少错误校验逻辑,无法定位执行异常。
具体修复方案

第一步:修改详情页表单,传递记录ID

在详情页的<form>标签内部、提交按钮之前,新增隐藏字段传递当前记录的ID:

<!-- 其他表单input保持不变 -->
<input type="hidden" name="c_id" value="<?=$id?>">
<input type='submit' name='update' value='Update' id='update' class='button small yellow'>

第二步:修改update-commit.php代码,补全逻辑和错误校验

替换原更新处理代码为以下版本:

<?php
require("../const.php");
check_loggedin($con);
$msg = '';

// 校验必要参数是否存在
if (!isset($_POST['name'], $_POST['description'], $_POST['assignee'], $_POST['length'], $_POST['min_time'], $_POST['c_id'])) {
    exit('参数缺失,请检查表单提交内容');
}

// 从POST请求中获取记录ID
$c_id = (int)$_POST['c_id'];

// 预处理语句 注意数值类型用i绑定
$stmt = $con->prepare('UPDATE sys_commits SET name = ?, description = ?, assignee = ?, length = ?, min_time = ? WHERE id = ?');
if (!$stmt) {
    exit('预处理语句错误:' . $con->error);
}
// 三个字符串+三个整数,绑定类型为sssiii
$stmt->bind_param('sssiii', $_POST['name'], $_POST['description'], $_POST['assignee'], $_POST['length'], $_POST['min_time'], $c_id);
if (!$stmt->execute()) {
    exit('执行更新错误:' . $stmt->error);
}
// 校验是否真的有记录被更新
if ($stmt->affected_rows === 0) {
    exit('没有记录被更新,可能是ID不存在或内容无变化');
}
$stmt->close();

header('Location: ../commitments.php');
exit;
?>

可选优化建议

  • 删除详情页中无用的isset($_GET['post'])相关代码段,该逻辑未实际用到且存在错误调用$dbc连接变量的问题
  • 详情页查询单条记录的逻辑也替换为预处理语句,避免SQL注入风险,替换原查询代码为:
if (isset($_GET['id'])) {
    $id = (int)$_GET['id'];
    $stmt = $con->prepare("SELECT * FROM sys_commits WHERE id = ?");
    $stmt->bind_param('i', $id);
    $stmt->execute();
    $result = $stmt->get_result();
    $row = $result->fetch_assoc();
    if (!$row) {
        header('Location: commitments.php');
        exit;
    }
}

内容的提问来源于stack exchange,提问作者Andrew Godby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 04:21:00