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

使用PHP PDO将MySQL中Blob图片转为Base64存入数组

解决MySQL Blob图片转Base64数组的问题

我来帮你搞定这个需求!你已经搭好了查询和循环的基础框架,只需要在while循环里把Blob数据转成Base64编码,再塞进数组就可以了。下面是完整的实现代码:

$sql = "SELECT img from artistlocation";
try{
    $db = new db();
    $db = $db->connect();
    $stmt = $db->query($sql);
    $data = array();
    while($result = $stmt->fetch(PDO::FETCH_OBJ)) {
        // 将Blob二进制数据转成Base64编码字符串
        $base64Img = base64_encode($result->img);
        
        // 可选:如果需要给前端直接渲染用,加上对应图片的MIME类型前缀(比如JPG)
        // $base64Img = "data:image/jpeg;base64," . base64_encode($result->img);
        
        // 把处理好的Base64字符串存入数组
        $data[] = $base64Img;
    }
    // 循环结束后,$data就是所有图片的Base64数组了
    // 可以在这里打印验证或者返回给调用方
    // print_r($data);
} catch(PDOException $e) {
    // 补充异常捕获,避免数据库操作出错时无提示
    echo "数据库错误: " . $e->getMessage();
}

关键细节说明:

  • Blob转Base64:PHP内置的base64_encode()函数可以直接把从数据库取出的二进制Blob数据转换成可存储的字符串格式。
  • MIME类型前缀(可选):如果你的数组是给前端<img>标签用的,记得加上对应的MIME前缀(比如data:image/png;base64,)。要是不确定图片类型,建议在数据库里加个img_mime字段存储类型,然后动态拼接:
    // 先把查询语句改成 SELECT img, img_mime from artistlocation
    $base64Img = "data:{$result->img_mime};base64," . base64_encode($result->img);
    
  • 异常处理:补充了PDO的异常捕获逻辑,避免数据库连接或查询出错时程序直接崩溃。

这样处理完,循环结束时$data数组就会包含每条数据库记录对应的Base64编码图片啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:13:57