php – 将mysql数据库中的BLOB映像显示为html中的动态div

我有一个BLOB图像,在用户提交广告表单时存储,他们可以选择上传一个图像.图像与其他信息一起存储在数据库中.

每次我的页面加载它动态创建广告div,并填写从我的数据库到div的匹配信息.

我遇到的问题是同时显示包括图像在内的所有信息,因此当用户点击查看页面时,他们会看到每个div都有不同的图片和信息.我已经看到了关于如何显示图像的其他帖子,但是当你从同一个数据库显示多个图像时,我怀疑它是同样的方法.

我的数据库设置如下:

ID
ADTITLE
电子邮件
价钱
描述
类别
名称
类型
尺寸
内容
日期

粗体变量用于图像/ 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技能也是初学者水平.我只是想尽可能保持简单明了的事情,我会稍后研究其他方法.

所有帮助表示赞赏.
谢谢

解决方法:

1)Base64选项

使用单行,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>

2)专用页面

在同一页面上有很多大图,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'];
}

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...