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

在Core PHP中使用Summernote编辑器更新带图片的文章时,无法显示内容及报错的求助

在Core PHP中使用Summernote编辑器更新带图片的文章时,无法显示内容及报错的求助

Hey Ahmad,别着急,咱们一步步拆解你的问题来解决:

首先处理那个警告错误

你看到的Warning: Trying to access array offset on value of type null是核心问题——这说明你的$row变量是null,也就是说你从数据库里根本没获取到要编辑的文章数据。你可以从这几个方向排查:

  • 检查文章ID的传递:你是不是通过URL参数(比如update-post.php?id=123)来获取要编辑的文章?先确认$_GET['id'](或者你用的其他参数)有没有正确拿到值,比如在页面顶部加一句var_dump($_GET);看看参数是否存在。
  • 检查数据库查询逻辑:假设你是根据ID查询文章,你的代码大概是这样的,要确保查询能返回结果:
// 先确保数据库连接正常
$conn = mysqli_connect("localhost", "username", "password", "blog_db");
if (!$conn) {
    die("数据库连接失败: " . mysqli_connect_error());
}

// 获取文章ID,这里用null合并运算符避免未定义变量
$post_id = $_GET['id'] ?? 0;
// 注意用预处理语句防止SQL注入!
$query = "SELECT * FROM posts WHERE id = ?";
$stmt = mysqli_prepare($conn, $query);
mysqli_stmt_bind_param($stmt, "i", $post_id);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$row = mysqli_fetch_assoc($result);

// 关键:检查是否查询到了数据
if (!$row) {
    echo "找不到要编辑的文章!";
    exit; // 停止执行后续代码,避免报错
}
  • 排查查询错误:如果查询没结果,可以用mysqli_error($conn)查看具体的SQL错误信息,比如表名写错、字段名不对之类的。

解决Summernote无法显示内容的问题

当$row能正确获取到数据后,还要注意Summernote的特性:

  1. 避免多余空白:你的textarea标签里,PHP代码前后有换行和空格,这些会被Summernote解析成空白内容,导致编辑器显示异常。要把内容紧贴textarea的标签:
<textarea name="description" class="summernote form-control" cols="30" rows="10"><?php echo isset($row['description']) ? htmlspecialchars_decode($row['description']) : ''; ?></textarea>
  1. HTML转义还原:如果你存储文章内容的时候用了htmlspecialchars()转义HTML标签(这是好习惯,防止XSS),那输出的时候必须用htmlspecialchars_decode()把HTML标签还原,否则Summernote只会显示纯文本的标签代码,而不是渲染富文本。
  2. 确保Summernote正确初始化:别忘了在页面底部加载jQuery和Summernote的JS/CSS,并且初始化编辑器:
$(document).ready(function() {
    $('.summernote').summernote({
        height: 350, // 设置编辑器高度
        toolbar: [
            // 按需配置工具栏按钮
            ['style', ['style']],
            ['font', ['bold', 'italic', 'underline', 'clear']],
            ['para', ['ul', 'ol', 'paragraph']],
            ['insert', ['picture', 'link']],
            ['view', ['fullscreen', 'codeview']]
        ]
    });
});

如果没有正确初始化,textarea还是普通文本框,自然没法显示富内容。

调试小技巧

  • 在页面顶部加<?php var_dump($row); ?>,看看$row['description']的具体值是不是你预期的HTML内容,有没有被截断或者损坏。
  • 直接在页面输出<?php echo htmlspecialchars_decode($row['description']); ?>,看看能不能正常渲染HTML,排除数据库存储的问题。

备注:内容来源于stack exchange,提问作者Ahmad Raza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 13:39:30