使用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
相关产品推荐
相关产品推荐

