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

PHP提交表单时如何修改数据库表最后一行数据而非新增行?

问题原因

你现有代码使用INSERT语句,该语句的作用就是向数据表插入新行,自然不会修改已有数据,要实现更新最后一行的需求需要改用UPDATE语句。

修复后的代码

<?php
if (!empty($contact)){
    if (!empty($password)){
        $host = "localhost";
        $dbusername = "root";
        $dbpassword = "";
        $dbname = "student";
        // 创建连接
        $conn = new mysqli($host, $dbusername, $dbpassword, $dbname);
        
        if (mysqli_connect_error()){
            die('连接错误 ('. mysqli_connect_errno() .') '
                . mysqli_connect_error());
        }
        
        // 使用预处理语句避免SQL注入,更新id最大的最后一行
        $sql = "UPDATE student_table2 SET contact = ? WHERE id = (SELECT max_id FROM (SELECT MAX(id) AS max_id FROM student_table2) AS temp)";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param("s", $contact);
        
        if ($stmt->execute()){
            header("Location: http://localhost/imgtxt/add/add.html");
            exit();
        } else {
            echo "错误: ". $sql . "<br>" . $conn->error;
        }
        
        $stmt->close();
        $conn->close();
    } else {
        echo "密码不能为空";
        die();
    }
} else {
    echo "contact字段不能为空";
    die();
}
?>

改动说明

  • 把原来的INSERT插入语句替换为UPDATE更新语句,通过子查询SELECT MAX(id) FROM student_table2获取表中最后一行的id进行匹配
  • 改用预处理语句绑定参数,修复了原代码直接拼接SQL字符串导致的SQL注入安全漏洞
  • 如果你确定只需要固定更新id为3的行,把WHERE条件改成WHERE id = 3即可

内容的提问来源于stack exchange,提问作者YASSIN.049

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:15:07