我正在开发一个PHP脚本,它从MYSQL数据库中读取数据。使用phpmyadmin,我可以看到所有数据都在数据库中并且格式正确。
数据库由文本列和blob列组成。
我现在来回读这些数据。我使用了以下代码。
$query = @"SELECT TEXT1, TEXT2, TEXT3, IMAGE FROM EXAMPLETABLE";
执行所有sql调用
现在,如果我执行以下命令,那么它将使用文本填充数组,但在image / blob位中为null
while($row = mysql_fetch_array($result))
{
$posts[] = array($row['TEXT1'], $row['TEXT2'], $row['TEXT3'], $row['IMAGE']);
}
Safari的结果
[["Gbv","TR","FG",null]]
如果我执行以下操作,我会获得图像数据。
while($row = mysql_fetch_array($result))
{
ECHO $row['IMAGE'];
}
修改 所以在看了代码之后(今天一直在努力工作)我注意到我发送了数组 echo json_encode($ posts);
json_encode正在弄乱blob数据。
由于
答案 0 :(得分:1)
从blob创建图像,捕获输出缓冲内容,转换为jpeg,从缓冲区中获取内容,结束输出缓冲,将图像推入数组。
$image = imagecreatefromstring($row['IMAGE']);
ob_start(); //start capture of the output buffer
imagejpeg($image, null, 80);
$data = ob_get_contents();
ob_end_clean();
$posts[] = array('text'1 => $row['TEXT1'], 'text2' => $row['TEXT2'], 'text3' => $row['TEXT3'], 'image' => $data);
然后执行以下操作:
foreach($posts as $post):
echo '<img src="data:image/jpg;base64,' . base64_encode($post['image']) . '" />';
endforeach;
那应该适合你。