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

编辑帖子功能故障报错:字段列表中不存在'trewfh'列

问题分析与修复方案

这个报错其实已经把核心问题说得很明确了——你在生成UPDATE SQL语句时,错误地把要更新的帖子内容trewfh当成了数据库表的字段名,而你的hw7_foru(推测是hw7_forum表)里根本不存在名为trewfh的字段。

从报错栈追踪能看到关键线索:

#1 C:\xampp\htdocs\Final\Forum\editpost.php(39): editpost(72, 'trewfh')

你调用editpost函数时,第二个参数是要更新的帖子内容trewfh,但你的函数实现里,错误地把这个内容值拼到了SQL的字段位置,而不是值的位置。

具体排查与修复步骤:

  • 先确认生成的SQL语句:
    打开editpost.php第55行附近,在调用mysqli_query之前,把生成的$sql变量打印出来(比如var_dump($sql); exit;),你会看到类似这样的错误SQL:

    UPDATE hw7_forum SET trewfh = 'xxx' WHERE post_id = 72
    

    这里明显把内容trewfh当成了字段名,而不是字段的值。

  • 修正SQL拼接逻辑:
    找到editpost函数的实现,确保你指定了正确的字段名(比如你的帖子内容字段可能叫content、post_content之类的),然后把用户输入的内容作为值传入。同时一定要用预处理语句,避免SQL注入风险。

    举个错误代码和修复后的对比:
    ❌ 错误的代码(混淆字段名和值):

    function editpost($post_id, $content) {
        global $conn;
        // 这里把$content当成了字段名,完全错误
        $sql = "UPDATE hw7_forum SET $content = 'some_value' WHERE post_id = $post_id";
        mysqli_query($conn, $sql);
    }
    

    ✅ 修复后的代码(指定正确字段名+用预处理防注入):

    function editpost($post_id, $content) {
        global $conn;
        // 替换成你实际的帖子内容字段名,比如post_content
        $sql = "UPDATE hw7_forum SET post_content = ? WHERE post_id = ?";
        // 使用预处理语句,既解决错误又防止SQL注入
        $stmt = mysqli_prepare($conn, $sql);
        mysqli_stmt_bind_param($stmt, "si", $content, $post_id);
        mysqli_stmt_execute($stmt);
        // 记得处理执行结果
        if(mysqli_stmt_affected_rows($stmt) > 0) {
            echo "帖子编辑成功";
        } else {
            echo "编辑失败:" . mysqli_error($conn);
        }
        mysqli_stmt_close($stmt);
    }
    
  • 验证数据库表结构:
    如果你不确定字段名,可以登录phpMyAdmin(或者用SQL命令)查看hw7_foru表的结构,确认存储帖子内容的字段名称,确保代码里的字段名和数据库一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:23:54