【问题标题】:How to retrieve images from MySQL database and display in an html tag如何从 MySQL 数据库中检索图像并显示在 html 标签中
【发布时间】:2011-12-09 05:32:34
【问题描述】:

我使用 phpmyadmin 创建了一个带有表的 MySQL 数据库。我用一个 BLOB 列创建了这个表来保存一个 jpeg 文件。

我对这里的 php 变量 $result 有疑问。

到目前为止我的代码:(catalog.php):

<body>
<?php
  $link = mysql_connect("localhost", "root", "");
  mysql_select_db("dvddb");
  $sql = "SELECT dvdimage FROM dvd WHERE id=1";
  $result = mysql_query("$sql");
  mysql_close($link);

?>
<img src="" width="175" height="200" />
</body>

如何将变量 $result 从 PHP 获取到 HTML 中,以便在 &lt;img&gt; 标记中显示它?

【问题讨论】:

  • Whaaaat 问题?您需要说明您的代码目前做错了什么。
  • 您可以从获取这些结果开始
  • 我不清楚显示 BLOB 图像所涉及的语法
  • @DamienPirsy 如何获取这些结果?
  • 只是我的 2 美分,与您的问题无关,但我认为您最好将图像存储在文件系统上并仅引用数据库中的路径。您将获得更好的性能,并且在存储图像的位置方面具有更大的灵活性。

标签: php mysql html


【解决方案1】:

你不能。您需要创建另一个 php 脚本来返回图像数据,例如获取图像.php。将 catalog.php 更改为:

<body>
<img src="getImage.php?id=1" width="175" height="200" />
</body>

那么getImage.php就是

<?php

  $id = $_GET['id'];
  // do some validation here to ensure id is safe

  $link = mysql_connect("localhost", "root", "");
  mysql_select_db("dvddb");
  $sql = "SELECT dvdimage FROM dvd WHERE id=$id";
  $result = mysql_query("$sql");
  $row = mysql_fetch_assoc($result);
  mysql_close($link);

  header("Content-type: image/jpeg");
  echo $row['dvdimage'];
?>

【讨论】:

  • 但问题是,我的数据库中有近 50 张图片。你写的是只获取一张图片。如何在页面中显示整个图片
  • 要从数据库中获取不同的图像,您只需更改 id 获取参数:&lt;img src="getImage.php?id=1" width="175" height="200" /&gt; &lt;img src="getImage.php?id=2" width="175" height="200" /&gt; ...
  • 这个答案是不正确的,因为它是可能的,查看 Ilmari 的答案。
  • @DheerajMPai 这整个脚本。虽然这些天你会使用 MySQLi 而不是 mysql_* 函数(这个答案是 7 岁)。
  • 它可能已经 7 岁了,但对初学者仍然有帮助。无论如何,我转向了 python。所以没有问题了!@megaflop
【解决方案2】:

从技术上讲,您也可以将图像数据放入 img 标签中,使用 data URIs

<img src="data:image/jpeg;base64,<?php echo base64_encode( $image_data ); ?>" />

在某些特殊情况下,这甚至可能有用,但在大多数情况下,您最好通过单独的脚本 like daiscog suggests 提供图像。

【讨论】:

  • 我想知道是否有人会建议数据 URI。效率不高,IMO(无浏览器/代理缓存),但值得一提。
【解决方案3】:

在 mysql_query() 之后添加 $row = mysql_fetch_object($result);

你的 html &lt;img src="&lt;?php echo $row-&gt;dvdimage; ?&gt;" width="175" height="200" /&gt;

【讨论】:

  • 您不能将原始图像数据放入 img src 中。 OP 明确指出数据库存储图像数据,而不是图像文件的路径。
【解决方案4】:

您需要检索信息并将其分解为您需要的内容。

while($row = mysql_fetch_array($result)) {
 echo "img src='",$row['filename'],"' width='175' height='200' />";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2013-01-13
    • 2012-05-02
    • 2016-02-07
    • 1970-01-01
    相关资源
    最近更新 更多