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

如何从MySQL中读取并展示存储为MEDIUMBLOB格式的网页图片

问题根因与修复方案

你代码存在2个核心错误导致图片无法正常渲染:

  • Data URI 格式不符合规范:浏览器要求嵌入的二进制图片内容必须经过base64编码,且需要在MIME类型后加;base64标识,你直接输出MEDIUMBLOB存储的原始二进制内容无法被解析。
  • PHP字符串拼接语法错误:单双引号混用导致字符串提前闭合,img标签没有被正确拼接进$html变量。

修正后的代码示例

$sql = "SELECT * FROM table_name ORDER BY record_id DESC";
$stmt = $db->stmt_init();
if ($stmt->prepare($sql)) {
    $stmt->execute();
    $stmt->bind_result($record_id, $image_name, $image_type, $image_size, $image_content);
    $stmt->store_result();
    if (!$stmt->num_rows) {
        // 做错误检查逻辑
    } else {
        while ($stmt->fetch()) {
            // 二进制内容base64编码,补全Data URI格式,修正字符串拼接
            $base64Img = base64_encode($image_content);
            $html = '<p>Image Name: '.htmlspecialchars($image_name).'<br>Image Type: '.htmlspecialchars($image_type).'<br>
                     Image Size: '.htmlspecialchars($image_size).'</p>
                     <img src="data:'.$image_type.';base64,'.$base64Img.'" alt="'.htmlspecialchars($image_name).'">';
            // 此处加你后续处理$html的逻辑
        }
    }
    $stmt->close();
}

额外排查点

如果修改后还是无法显示,按以下步骤排查:

  • 确认你存储图片到MEDIUMBLOB时,没有往二进制内容里插入多余的换行、空格、BOM头等冗余字符
  • 验证$image_type的值是合法的MIME类型,比如image/jpeg、image/png,不能是后缀名如jpg、png

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:06:01