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

PHP从MySQL数据库显示图片失败求助:图片显示为编码内容

解决PHP从MySQL LongBlob显示图片的问题

你的代码存在几个关键问题,导致图片无法正常显示,修正方案如下:

问题点及修复

  • 变量名笔误:循环中定义的变量是$row,但引用图片时写成了$rows['image'],导致无法正确读取图片数据。
  • 未对二进制数据编码:LongBlob存储的是原始二进制图片数据,必须通过base64_encode()转换为Base64字符串,才能嵌入到data URI中。
  • 缺少具体MIME类型:data:image;base64需要指定图片的实际类型(如image/jpeg、image/png),否则浏览器无法正确解析。

修正后的完整代码

<body>
<?php
// 建立数据库连接并检查错误
$con = mysqli_connect('localhost','root','','warframe');
if (!$con) {
    die("数据库连接失败: " . mysqli_connect_error());
}

// 查询数据
$load = mysqli_query($con, "SELECT * FROM frames");
while ($row = mysqli_fetch_assoc($load)) {
    // 将二进制图片数据转为Base64编码
    $imageBase64 = base64_encode($row['image']);
    // 替换为你实际的图片MIME类型,如image/png、image/gif
    $imageMime = "image/jpeg";
    $imageSrc = "data:$imageMime;base64,$imageBase64";

    // 输出内容
    echo "<div class='content'>
            <div class='frame'>
                <img src='{$imageSrc}' alt='{$row['frame_name']}'>
                <div class='frame__name'>
                    <p>{$row['frame_name']}</p>
                </div>
            </div>
          </div>";
}

mysqli_close($con);
?>
</body>

额外建议

  1. 如果数据库中存储的图片类型不统一,建议新增image_mime字段(varchar类型),存储对应图片的MIME类型,这样可以动态生成正确的data URI:$imageSrc = "data:{$row['image_mime']};base64,$imageBase64";
  2. 确认存入数据库的是原始二进制图片数据,而非提前Base64编码后的字符串,否则会出现重复编码导致的显示异常。
  3. 可添加空值判断,避免图片字段为空时输出无效的图片链接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 08:42:13