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

如何将textarea内容存入MySQL?提交时仅插入pre标签无内容求助

解决textarea内容未插入数据库的问题

我来帮你一步步排查和解决这个问题:

核心原因分析

你提到仅插入了<pre>标签,说明PHP中变量$a是空的——也就是说前端的textarea内容没有成功传递到后端。大概率是因为你用了富文本编辑器(比如CKEditor、TinyMCE这类),这类编辑器会替换原生textarea,但提交表单时没有把编辑器内容同步回原生的name="a"的textarea字段。

解决步骤

1. 先确认前端是否传递了textarea的值

先做个简单的调试,在表单提交时查看textarea的实际值:

<form method="post" onsubmit="console.log(document.getElementById('txtEditor').value); return true;">
  <input type="text" class="form-control" id="e" name="e">
  <textarea id="txtEditor" name="a"></textarea>
  <input type="submit" value="Save" name="save"/>
</form>

提交表单时打开浏览器控制台(F12),如果控制台打印的是空字符串,说明编辑器内容没有同步到textarea;如果有内容,再检查后端的接收逻辑。

2. 同步富文本编辑器内容到textarea

如果你用了CKEditor这类编辑器,需要在表单提交前手动触发同步,把编辑器的内容写入原生textarea:

<form method="post" id="myForm">
  <input type="text" class="form-control" id="e" name="e">
  <textarea id="txtEditor" name="a"></textarea>
  <input type="submit" value="Save" name="save"/>
</form>

<script>
document.getElementById('myForm').addEventListener('submit', function(e) {
  // 同步CKEditor内容到textarea(根据你用的编辑器调整代码)
  if (window.CKEDITOR && CKEDITOR.instances.txtEditor) {
    CKEDITOR.instances.txtEditor.updateElement();
  }
});
</script>

如果是其他编辑器,比如TinyMCE,对应的同步方法是tinymce.get('txtEditor').save(),你可以根据编辑器文档调整。

3. 修复PHP代码的安全问题(重要!)

你当前的代码用extract($_POST)和直接拼接SQL语句,存在严重的SQL注入风险,必须改成预处理语句:

<?php
$connect = new mysqli("localhost","root","","database") or die("ERROR:could not connect to the database!!!");

if(isset($_POST['save'])) {
    // 安全获取表单参数,避免extract的风险
    $e = $_POST['e'] ?? '';
    $a = $_POST['a'] ?? '';
    $msg = "<pre>$a</pre>";

    // 使用预处理语句防止SQL注入
    $query = "INSERT INTO questions (e, a) VALUES (?, ?)";
    $stmt = $connect->prepare($query);
    // 绑定参数:"ss"表示两个字符串类型的参数
    $stmt->bind_param("ss", $e, $msg);
    
    if($stmt->execute()) {
        echo "Data saved";
    } else {
        echo "Error saving data: " . $connect->error;
    }
    
    $stmt->close();
}
$connect->close();
?>

4. 基础检查

  • 确认textarea的name属性确实是a,和PHP中$_POST['a']对应(你的代码里是对的,但以防拼写错误);
  • 检查有没有其他JavaScript代码阻止了表单的正常提交,或者修改了textarea的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:19:36