我有一个BLOB图像,当用户提交广告表单时存储该图像,他们可以选择上传一个图像。图像与其他信息一起存储在数据库中。
每次我的页面加载动态时都会创建广告div,并将匹配的信息从我的数据库填入div。
我遇到的问题是同时显示包括图像在内的所有信息,因此当用户点击查看页面时,他们会看到每个div有不同的图片和信息。我已经看过关于如何显示图像的其他帖子,但是当你从同一个数据库中显示多个图像时,我怀疑它是一样的方法。
我的数据库设置如下:
ID ADTITLE 电子邮件 价钱 描述 类别 的名 类型 尺寸 内容 DATE
粗体变量用于image / blob
以下是我检索信息的代码:
$Category = 'Specials';
$query = $pdo->prepare("SELECT * FROM adsubm WHERE CATEGORY LIKE '%$Category%' ORDER BY DATE DESC" );
$query->execute();
while($row = $query->fetch()) {
$Adtitle=$row['ADTITLE'];
$Desc=$row['DESCRIPTION'];
$Price=$row['PRICE'];
$Date=$row['DATE'];
$timestamp=strtotime($Date);
$Day= date("d",$timestamp);
$Month=date("F",$timestamp);
$Newmonth=date('M', strtotime($Month . '01'));
$Year=date("Y",$timestamp);
header('Content-type: image/jpeg');
$Image=$row['content'];
echo "
<div class='[ col-xs-12 col-sm-offset-2 col-sm-8 ]' style='margin-top: 10px'>
<ul class='event-list'>
<li>
<time datetime='$Date'>
<span class='day'>$Day</span>
<span class='month'>$Newmonth</span>
<span class='year'>$Year</span>
<span class='time'>ALL DAY</span>
</time>
<img alt='#' src='$Image/>
<div class='info'>
<h2 class='title'>$Adtitle</h2>
<p class='desc'>$Desc</p>
<ul>
<li style='width:50%;'><span class='fa fa-money'></span> $Price</li>
</ul>
</div>
</li>
</ul>
</div>
";
我的PHP技能也是初学者水平。我只是想尽可能保持简单明了的事情,我会在以后查看其他方法。
感谢所有帮助。 感谢
答案 0 :(得分:9)
使用单行,image/png
表示png图像,image/jpeg
表示jpg图像:
echo '<img src="data:image/png;base64,'.base64_encode($blob).'"/>';
示例:
<div style="background-color:black; text-align:center; padding: 5px;">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAwBAMAAACh2TSJAAAALVBMVEUAAADtNTX////3n5/+9fX719f7zMz5tLTzfHzuQED//f31jY3ybGzxXV3wVFRaxp+rAAAAAXRSTlMAQObYZgAAALVJREFUOMut0rENAjEQRNHdC4kY0QBaAQUQX0QAFSAKIKQEKiAA6VqgIkriApuV1x7pQPz0aWwHljLMpZ0CRDBGoXmeghGYKFJsUo90giAImCgV5OJF+oOgKE48MlGgs2VLBIunWesw0a1ZHqF82c7GmmIfUSpgotOly29DFPFJFDEhkgIT/V5mZuvj6XofKrHU6vyI4u37IYi36aN4h5tL7PJyif1dvCgEpapzISbCTEj5R78BZq5A5Ldh2XYAAAAASUVORK5CYII">
</div>
在同一页面上有很多大图片,base64可能不是一个好选择
Base64很酷,但有点重(通常在二进制值编码的两倍左右)而无法缓存由浏览器,因为它是页面的一部分,而不是页面本身(如图片)。
在这种情况下,最好是使用特定的php页面来显示你的图片:
在主页上使用而不是base 64:echo '<img src="image.php?id='.$id.'"/>';
,其ID为您想要图像的行。
在image.php
上,您应该使用以下内容:
// << include the $pdo here
$query = $pdo->prepare("SELECT `content` FROM `adsubm` WHERE `id` = :id" );
$query->execute(array(':id'=>$_GET['id']));
$data = $query->fetch();
if(empty($data)))
header("HTTP/1.0 404 Not Found");
else {
header('Content-type: image/jpeg');
echo $data['content'];
}