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

PDO获取textarea输入值更新MySQL列失败问题求助

问题分析与解决方案

你的问题核心在于页面加载时就直接执行了UPDATE操作,此时表单还没提交,$_POST['whatupdate']根本不存在,所以数据库被更新为空值。另外你的代码还有SQL注入风险,这也是需要修正的关键问题。

具体问题拆解:

  • 你的PHP代码没有判断表单是否被提交,只要页面加载就会执行UPDATE逻辑,此时$_POST数组里没有whatupdate的对应值,导致$what为空字符串。
  • 直接把变量拼进SQL语句,存在严重的SQL注入漏洞,这是生产环境绝对不能出现的操作。

修改后的完整代码:

<div class="container">
    <div class="row">
        <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12" style="text-align: center; margin-top: 70px;">
            <form method="post" action="../index.php">
                <textarea style="width: 100%; height: 100px;" name="whatupdate"></textarea><br><br>
                <input type="submit" class="btn btn-outline-danger" name="subsub">
            </form>
            <?php
                require '../database.php';
                // 先判断表单是否被提交(通过检查提交按钮的name是否存在于POST中)
                if(isset($_POST['subsub'])){
                    // 安全获取textarea输入值,同时去除首尾空格
                    $what = isset($_POST['whatupdate']) ? trim($_POST['whatupdate']) : '';
                    if(!empty($what)){
                        $db = Database::connect();
                        // 开启PDO异常模式,方便调试数据库操作错误
                        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                        // 使用PDO参数绑定,彻底避免SQL注入风险
                        $statement = $db->prepare("UPDATE updator SET marquee = :what WHERE id=0;");
                        $statement->bindParam(':what', $what);
                        $statement->execute();
                        echo "内容更新成功!";
                    } else {
                        echo "请输入要更新的内容!";
                    }
                }
            ?>
        </div>
    </div>
</div>

关键改动说明:

  • 添加表单提交判断:通过isset($_POST['subsub'])确认用户确实点击了提交按钮,只有此时才执行数据库更新逻辑。
  • 安全处理输入值:用isset()和trim()处理POST参数,避免Undefined index错误,同时过滤掉无意义的空输入。
  • PDO参数绑定:用:what占位符代替直接拼接变量,这是PDO操作数据库的标准安全写法,彻底杜绝SQL注入。
  • 开启异常模式:帮助你在开发阶段快速定位数据库操作的错误,方便调试。

这样修改后,只有当你输入内容并点击提交按钮时,才会执行UPDATE操作,既能正确获取textarea的输入值,又保证了代码的安全性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:47:37