Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从MySQL数据库检索图像并显示在html标记中_Php_Mysql_Html - Fatal编程技术网

Php 如何从MySQL数据库检索图像并显示在html标记中

Php 如何从MySQL数据库检索图像并显示在html标记中,php,mysql,html,Php,Mysql,Html,我使用phpmyadmin创建了一个带有表的MySQL数据库。我用一个BLOB列创建了这个表来保存一个jpeg文件 我对php变量$result有问题 到目前为止,我的代码是:(catalog.php): 如何将变量$result从PHP获取到HTML中,以便在标记中显示它?您需要检索信息并将其分离到所需的内容中 while($row = mysql_fetch_array($result)) { echo "img src='",$row['filename'],"' width='17

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

我对php变量
$result
有问题

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



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

您需要检索信息并将其分离到所需的内容中

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

你不能。您需要创建另一个php脚本来返回图像数据,例如getImage.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'];
?>

添加
$row=mysql\u fetch\u对象($result)在mysql_查询()之后

您的html
dvdimage;?>“width=“175”height=“200”/>

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

“/>

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

我在插入数据库之前添加了斜杠,因此在获取时,我再次删除了斜杠
stripslashes()
,这对我很有用。我正在分享适用于我的代码

如何插入mysql数据库(blob类型)

现在进入图像

$sqlQuery = "SELECT * FROM student_img WHERE id = $stid";
$rs = $db->query($sqlQuery);
$result=mysqli_fetch_array($rs);
echo '<img src="data:image/jpeg;base64,'.base64_encode( stripslashes($result['image']) ).'"/>';
$sqlQuery=“从学生\ img中选择*,其中id=$stid”;
$rs=$db->query($sqlQuery);
$result=mysqli\u fetch\u数组($rs);
回声';
希望它能帮助别人


谢谢。

什么问题?你需要说明你的代码现在做错了什么。你可以从获取这些结果开始。我不清楚显示BLOB所涉及的语法image@DamienPirsy我怎样才能得到这些结果?只有我的2美分,与你的问题无关,但我认为最好将图像存储在文件系统中,然后只引用数据库中的路径。您将获得更好的性能,并在存储图像的位置上具有更大的灵活性。您不能将原始图像数据放入img src中。OP明确指出数据库存储的是图像数据,而不是图像文件的路径。我想知道是否有人会建议使用数据URI。效率不是很高,IMO(没有浏览器/代理缓存),但确实值得一提,我的数据库中有近50个图像。您编写的是为了只获取一个图像。如何在页面中显示整个图像要从数据库中获取不同的图像,只需更改
id
get参数:
这个答案是不正确的,因为有可能,请查看Ilmari的答案。@DheerajMPai这是整个脚本。虽然现在你会使用MySQLi而不是mysql_*函数(这个答案已经有7年历史了)。它可能已经有7年历史了,但对初学者来说仍然很有帮助。无论如何,我换了python。所以没有问题了@巨变
$db = mysqli_connect("localhost","root","","dName"); 
$image = addslashes(file_get_contents($_FILES['images']['tmp_name']));
$query = "INSERT INTO student_img (id,image) VALUES('','$image')";  
$query = mysqli_query($db, $query);
$sqlQuery = "SELECT * FROM student_img WHERE id = $stid";
$rs = $db->query($sqlQuery);
$result=mysqli_fetch_array($rs);
echo '<img src="data:image/jpeg;base64,'.base64_encode( stripslashes($result['image']) ).'"/>';