如何使用 php 从 mysql 显示多个图像(blob)?

发布于 2024-11-03 06:40:58 字数 360 浏览 1 评论 0原文

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

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

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

I'm trying to display multiple images using PHP and MySql database, even if using the while loop I don't get all of the images, I only get one, I mean the first one in the table. What's the problem ?

I'm using a table ID_IMAGE (int, pk, auto increment) and myImage (blob)

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

楠木可依 2024-11-10 06:40:58

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

image.php

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

// DataBase query and processing here...

echo $data['myImage'];

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

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

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

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

A possible way to solve this problem is to have a separate script to dynamically output the contents of the image eg. :

image.php

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

// DataBase query and processing here...

echo $data['myImage'];

and call it whenever you need to show images stored in your DB eg. inside your loop:

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

But storing images in the database will take a toll on your server and unless they're really small or you have a good reason to do so, you should only store their physical location on the disk.

You can also use this approach if you wish to hide image location from your users, or control access, but there are better and faster alternatives for that case.

口干舌燥 2024-11-10 06:40:58

只需提及通过编码将图像直接嵌入到 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%。

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

Just to mention the possibility to embed the images directly in html by encoding them, you can use this:

$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']) . '">';
    }
}

Pro:

  • The browser does not need to load the images over an additional network connection
  • You can query and display multiple images in one request

Con:

  • If the image(s) are big and/or there will be many images, the page will be load slow
  • Encoding an image to base64 will make it about 30% bigger.

For more information about base encode images:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文