簡體   English   中英

使用 mysqli php 7 從數據庫中檢索圖像

[英]retrieve image from database using mysqli php 7

我正在嘗試從數據庫中檢索一個 png 圖像文件

這是來自 body 內<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'];
  }
?>

在運行代碼時,我只得到一個帶有“未加載圖像”的圖像框架(我說的對嗎?)。我很確定 man.php 文件有問題,可能在 echo $row['image'] 中。 我不知道如何使它正確。 對此的任何幫助都會很棒。

如果要檢索在 phpmyadmin 中存儲為 BLOB 類型的圖像,則必須按如下方式回顯它。

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

例子:

要從數據庫中檢索 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);
?>

回顯圖像數據后應調用函數mysqli_close 這是因為它破壞了結果集。

另外請修復 SQL 注入漏洞:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM