【问题标题】:how to Display Multiple Images (blob) from mysql using php?如何使用 php 从 mysql 显示多个图像(blob)?
【发布时间】:2011-08-10 20:50:41
【问题描述】:

我正在尝试使用 PHP 和 MySql 数据库显示多个图像,即使使用 while 循环我也没有得到所有图像,我只得到一个,我的意思是表中的第一个。有什么问题?

我正在使用表 ID_IMAGE (int, pk, auto increment)myImage (blob)

$query = mysql_query("SELECT myImage FROM image");
while($data=mysql_fetch_array($query)) {
    header('Content-type: image/jpg');
    echo $data['myImage'];
}

【问题讨论】:

  • 朋友,你得先学HTML

标签: php html mysql image http-headers


【解决方案1】:

解决此问题的一种可能方法是使用单独的脚本来动态输出图像的内容,例如。 :

image.php

header('Content-type: image/jpg');

// DataBase query and processing here...

echo $data['myImage'];

并在您需要显示存储在数据库中的图像时调用它,例如。在你的循环内:

echo '<img src="image.php?id=' . $data['id'] . '">';

但是将图像存储在数据库中会对您的服务器造成影响,除非它们非常小或者您有充分的理由为此,您应该只将它们的物理位置存储在磁盘上。

如果您希望对用户隐藏图像位置或控制访问,您也可以使用此方法,但对于这种情况,有更好更快的替代方法。

【讨论】:

    【解决方案2】:

    只是提到通过编码将图像直接嵌入到 html 中的可能性,你可以使用这个:

    $query = "SELECT myImage FROM image";
    if ($result = mysqli_query($link, $query)) {
        while ($row = mysqli_fetch_assoc($result)) {
            echo '<img src="data:image/jpg;base64,' . base64_encode($row['myImage']) . '">';
        }
    }
    

    专业版:

    • 浏览器无需通过额外的网络连接加载图像
    • 一个请求可以查询和显示多张图片

    缺点:

    • 如果图片很大和/或图片很多,页面加载速度会很慢
    • 将图像编码为 base64 会使其大 30% 左右。

    有关基本编码图像的更多信息:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多