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

PHP代码无报错但数据库无法更新问题求助

问题分析与修复方案

首先一眼就戳中核心问题:你只定义了更新的SQL语句,但根本没有执行它!这就是数据库没变化的原因——代码只是把SQL字符串写出来了,没告诉PHP去实际运行这条命令。另外还有几个潜在问题,我一起帮你梳理清楚:

1. 最关键的缺失:执行SQL语句

在你定义完$sql变量之后,必须调用mysql_query()来执行这条更新命令,最好加上错误检查方便排查问题:

$sql = "UPDATE `mydatabase` SET `mon_am` = '$mon_am' WHERE `id` = 1";
// 执行SQL并检查是否成功
if (!mysql_query($sql, $conn)) {
    die('更新失败: ' . mysql_error());
}

2. 必须处理的SQL注入风险

直接把$_POST的内容拼到SQL里是非常危险的操作,哪怕是自己用的小项目也可能被攻击。你需要用mysql_real_escape_string()来转义用户输入:

$mon_am = mysql_real_escape_string($_POST['mon_am'], $conn);

3. 字符串类型字段的引号问题

如果mon_am是字符串类型的字段,你的原SQL里没有给变量加引号,这会导致SQL语法错误(你在phpMyAdmin里能执行是因为手动输入时加了引号)。转义后一定要给变量加上单引号,就像上面修复的那样。

4. 过时函数的警告

mysql_*系列函数早在PHP 5.5就被废弃了,PHP 7更是直接移除了这些函数,所以强烈建议你换成mysqli扩展(MySQL Improved),兼容性更好也更安全。下面给你一个用mysqli重写的版本:

推荐的mysqli修复版代码

<?php
if(isset($_POST['submit'])){
    $dbhost = 'localhost';
    $dbuser = 'dbuser';
    $dbpass = 'dbpass';
    $dbname = 'mydatabase'; // 这里要明确指定数据库名

    // 创建mysqli连接
    $conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
    // 检查连接错误
    if ($conn->connect_error) {
        die("连接失败: " . $conn->connect_error);
    }

    // 使用参数化查询彻底避免SQL注入
    $stmt = $conn->prepare("UPDATE `mydatabase` SET `mon_am` = ? WHERE `id` = 1");
    $stmt->bind_param("s", $_POST['mon_am']); // "s"表示字符串类型,根据字段类型调整(i=int, d=double)
    $stmt->execute();

    if($stmt->affected_rows > 0){
        echo "更新成功!";
    } else {
        echo "没有数据被更新,可能输入内容和原数据一致或查询出错";
    }

    $stmt->close();
    $conn->close();
}
?>
<!DOCTYPE html>
<html>
<head>
    <title>title</title>
</head>
<body>
    <form method="POST" action="mon_am.php">
        <input type="text" name="mon_am">
        <input type="submit" name="submit">
    </form>
</body>
</html>

额外小问题

原代码里mysql_close($conn);放在了if(isset($_POST['submit']))外面,当用户第一次访问页面没有提交表单时,$conn还没定义就会触发错误,所以一定要把关闭连接的代码放到if块里面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:55:54