2013-12-13 123 views
28

我试图显示存储在数据库的BLOB列中的图像;来自MySQL的PHP​​显示图像BLOB

我取从一个SELECT数据库中的数据对数据进行任何转换,并具有以下(从脚本,其唯一的输出如下)显示出来:

header("Content-Type: image/jpeg"); 
echo $image; 

请注意浏览器显示内容大小作为图像的正确大小以及正确的MIME类型(image/jpeg)。在标题之前没有任何回应,并且检查数据库中的blob是否正确。在<?php ?>标签之前或之后也没有尾随空白。

铬/ IE显示图像图标,但不显示图像本身。有任何想法吗?

编辑:图像,这样得到了从数据库中:

$sql = "SELECT * FROM products WHERE id = $id"; 
$sth = $db->query($sql); 
$row = $sth->fetch(); 
$image = $row['image']; 

的var_dump($图像)给出:

string 'ÿØÿà�JFIF��x�x��ÿá�ZExif��MM�*�����������J��������Q�������Q������tQ������t�����† ��±ÿÛ�C�  

ÿÛ�CÿÀ�_"�ÿÄ����������� 
ÿÄ�µ���}�!1AQa"q2‘¡#B±ÁRÑð$3br‚ 
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³ ´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ��������'... (length=60766) 
+0

请问什么构成'$ image'(即查询等) – Machavity

+0

@ user2732663您是否尝试过我的答案? –

+0

尝试将'$ image'保存为二进制文件并将其打开,可能数据库中的数据已损坏? –

回答

85

请尝试像这样。

用于插入DB

$db = mysqli_connect("localhost","root","","DbName"); //keep your db name 
$image = addslashes(file_get_contents($_FILES['images']['tmp_name'])); 
//you keep your column name setting for insertion. I keep image type Blob. 
$query = "INSERT INTO products (id,image) VALUES('','$image')"; 
$qry = mysqli_query($db, $query); 

用于访问图像从斑点

$db = mysqli_connect("localhost","root","","DbName"); //keep your db name 
$sql = "SELECT * FROM products WHERE id = $id"; 
$sth = $db->query($sql); 
$result=mysqli_fetch_array($sth); 
echo '<img src="data:image/jpeg;base64,'.base64_encode($result['image']).'"/>'; 

希望它会帮助你。

谢谢。

+0

您能举一个例子吗?您是如何从Ajax调用中获取mysql查询的用户标识(“SELECT * FROM products WHERE id = $ id”)?我会非常感激。 – diank

+0

你是一个人生的救星 –

11

这是我用来从BLOB显示图像:

echo '<img src="data:image/jpeg;base64,'.base64_encode($image->load()) .'" />'; 
+0

是$ image a php object? –

+0

thanks。It works – Pun

+0

Working like charm!Thank you .. @ProgrammingNewb你可以把你的图像数据类型放在$ image中。它可能是一个来自$ row [“photo”]的PHP变量; –

0

因为我必须存储杂色山雀类型的内容在我的BLOB字段/列,假设更新像这样我的代码:

echo "data: $mime" $result['$data']"; 

其中: 哑剧可以是任何类型,文本,文字的图像文档,文本文档,pdf文档等。 数据是blob的列内容