You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP使用mysqli操作MySQL提交后数据未更新问题排查求助

PHP mysqli更新数据库不生效问题排查方案

核心问题排查点

  • 提交触发逻辑校验
    先确认前端提交的表单中,提交按钮的name属性值是否为edit,同时表单提交方式是否为POST,只要其中一项不符合,if(isset($_POST['edit']))的判断就不会通过,更新逻辑完全不会执行。
  • 执行结果判断逻辑错误
    mysqli_query执行UPDATE语句成功时返回的是布尔值true,不是数值1,且如果提交的字段值和数据库已有值完全一致,MySQL不会产生实际的更新操作,mysqli_affected_rows返回值为0,你当前的$result == 1判断逻辑会把执行成功但无数据变更的情况判定为失败,导致你误认为更新没有执行。
  • SQL语法错误风险
    你直接将未转义的用户输入拼接进SQL语句,一旦date/total/remarques等字段的提交值包含单引号、反斜杠等特殊字符,会直接触发SQL语法错误,导致语句执行失败。如果页面跳转后你看不到die输出的错误信息,就无法感知到这类报错。
  • 匹配条件失效问题
    你当前的WHERE条件是id = '$rn',如果你的id字段为数值类型,rn参数为空、传递的是字符串或者值不存在于数据库的id列中,都会导致没有行匹配到更新条件,自然不会产生数据变更。

修复后的参考代码

<?php
$host = "sql308.-----.com";
$dbUsername = "----_3041----";
$dbPassword = "-----------";
$dbName = "----_3041----_phpmysqli";

$conn = mysqli_connect($host, $dbUsername, $dbPassword, $dbName);

// Check connection
if ($conn->connect_error) {
    die("连接失败!".$conn->connect_error);
}

// 只在POST提交时处理更新逻辑
if(isset($_POST['edit'])) {
    // 校验必填参数不为空
    if(empty($_POST['rn']) || empty($_POST['date']) || empty($_POST['total'])) {
        die("必填参数缺失");
    }
    // 对参数做转义,避免SQL注入和语法错误
    $rn = mysqli_real_escape_string($conn, $_POST['rn']);
    $dt = mysqli_real_escape_string($conn, $_POST['date']);
    $to = mysqli_real_escape_string($conn, $_POST["total"]);
    $rk = mysqli_real_escape_string($conn, $_POST['remarques']);

    $sql = "UPDATE `datab1` SET 
    `date` = '$dt',
    `total` = '$to',
    `remarques` = '$rk' 
    WHERE `datab1`.`id` = $rn"; // 数值类型id不需要加单引号
    
    $result = mysqli_query($conn, $sql);
    
    if($result) {
        // 执行成功直接跳转,不需要判断等于1
        header('location:table.php');
        exit; // 跳转后加exit终止后续代码执行
    } 
    else {
        die(mysqli_error($conn));
    }
}
// 非POST请求的GET参数读取逻辑放在这里,避免提前覆盖POST提交的rn值
$rn = $_GET['rn'] ?? '';
$dt = $_GET['dt'] ?? '';
$to = $_GET['to'] ?? '';
$rk = $_GET['rk'] ?? '';
?>

内容的提问来源于stack exchange,提问作者fouad B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:24:03