使用mysqli php 7从数据库中检索图像

时间:2016-09-25 09:24:33

标签: php mysqli

我正在尝试从数据库中检索png图像文件

以下是来自正文中<img>标记内的来电:

<img src="..\BankLogin\man.php?id=2" style="width:128px;height:150px">

这里是man.php文件:

<?php
   $link = mysqli_connect("localhost","root","","images");
   $imgId = $_GET['id'];
   if (!empty($imgId)) {
   $sqliCommand = "SELECT image FROM images WHERE id = $imgId";
   $result = mysqli_query($sqliCommand,$link);
   $row = mysqli_fetch_assoc($result);
   mysqli_close($link);   
   header("Content-type: image/png");
   echo $row['image'];
  }
?>

在运行代码时,我只是得到一个带有&#39;卸载图像的图像框架(我说的正确吗?)。我很确定man.php文件中有问题,可能是回声$行[&#39;图像&#39]。我不确定如何做到正确。任何帮助都会很棒。

2 个答案:

答案 0 :(得分:0)

如果你想检索在phpmyadmin中存储为BLOB类型的图像,你必须按如下方式回显它。

echo '<img src="data:image/jpeg;base64,'.base64_encode( $rows['image'] ).'"/>'

示例:

要从DB中检索BLOB图像,您必须这样做。

<?php
$db = mysqli_connect("localhost","root","","dbname"); //keep your db name
$query = "SELECT * FROM image WHERE id = $id";
$sth = $db->query($query);
$fetch=$sth->fetch_assoc();
echo '<img src="data:image/jpeg;base64,'.base64_encode( $fetch['image'] ).'"/>';
?>

对于插入图像,您需要按照这样的步骤进行操作。如果您将其编码为base 64,则可以完美地检索图像而不会出现任何错误。

<?php
$conn = mysqli_connect("localhost","root","","DbName"); //keep your db name
$single_image = addslashes(file_get_contents($_FILES['images']['tmp_name']));
//U have to keep your DB table column name for insertion. I keep image type Blob.
$query = "INSERT INTO image (image) VALUES('".$single_image."')";  
$SQL = mysqli_query($conn, $query);
?>

答案 1 :(得分:0)

在回显图像数据后应调用函数mysqli_close。这是因为它会破坏结果集。

另请修复SQL注入漏洞:

$imgId = (int)$_GET['id'];