簡體   English   中英

如何從MySQL數據庫中檢索BLOB格式的圖像並以html格式顯示 <img> 標簽?

[英]How to retrieve images in BLOB format from MySQL database and display in an html <img> tag?

我使用phpmyadmin創建了一個帶有表的MySQL數據庫。 我用BLOB列創建了這個表來保存.jpg文件。

目前我正試圖在HTML標簽中顯示圖像(BLOB),但沒有成功。 我只是在運行代碼時獲得了損壞的圖像圖標。

注意:我知道不建議這樣做,但目前我也有。

我已經嘗試在stackoverflow.com,quora.com和codeofaninja.com中查找各種問題,並嘗試實施似乎適用於其他人的各種解決方案,但它們並沒有為我工作。

我在哪里顯示信息(test.php):

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

代碼我試圖用來顯示圖像(getImage.php)

<?php
  $link = mysqli_connect("localhost", "root", "");
  mysqli_select_db("unirentas");
      $id = $_GET['id'];
      // do some validation here to ensure id is safe

      $sql = "SELECT imagen FROM propiedades WHERE ID_renta=$id";
      $result = mysqli_query("$sql");
      $row = mysqli_fetch_assoc($result);
      mysqli_close($link);

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

這應該顯示數據庫中的所有行以及相同的圖像,但它的作用是顯示所有行及其相應的信息和損壞的圖像。

你的第一個錯誤是你寫了一個程序,它做了很多事情,然后試圖解決為什么它們都沒有工作。 您應該已經創建了一個Minimal,Verifiable和Complete腳本來測試它並首先修復它 - 您在此處發布的第一個腳本的全部內容應替換為:

<html>
<img src="getImage.php?id=10" />
</html>

您還應該發布將數據寫入數據庫的代碼。您和我們都不知道問題是關於寫入數據庫的數據還是在檢索數據時發生的問題。

您還應該檢查您的錯誤記錄/報告是否正常工作,並且PHP尚未告訴您錯誤是什么。

您可以嘗試的其他事情是將數據寫入文件並檢查您是否確實擁有圖像文件,查看getimage.php返回的標頭以確保它們符合您的預期。

最后,在將這樣的代碼插入互聯網之前,請花點時間學習一些關於安全編程的知識 - 這里存在很多安全問題。

我找到了問題的解決方案,我使用了base64_encode($ blob); 功能

<?php
// Server credentials 
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "unirentas";

// Creating mysql connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Checking mysql connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

// Writing a mysql query to retrieve data 
$sql = "SELECT ID_renta, calle, smz, mz, lote, precio, universidad, fecha, imagen, nombre, telefono, correo FROM propiedades";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  // Show each data returned by mysql
  while($row = $result->fetch_assoc()) {
      $ID_renta = $row["ID_renta"];
      $calle = $row["calle"];
      $smz = $row["smz"];
      $mz = $row["mz"];
      $lote = $row["lote"];
      $precio = $row["precio"];
      $universidad = $row["universidad"];
      $fecha = $row["fecha"];
      $blob = $row["imagen"];
      $nombre = $row["nombre"];
      $telefono = $row["telefono"];
      $correo = $row["correo"];


echo "

    <!-- USING HTML HERE : -->

    <p> ID : $ID_renta</p>
    <p> Calle : $calle </p>
    <p> Smz : $smz </p>
    <p> Mz : $mz </p>
    <p> Lote : $lote </p>
    <p> Precio :  $precio </p>
    <p> Universidad : $universidad </p>";
    echo '<img src="data:image/png;base64,'.base64_encode($blob).'"/>';
    echo "<p> Fecha_  $fecha  </p>
    <p> Nombre :  $nombre  </p>
    <p> Telefono :  $telefono </p>
    <p> Correo :  $correo  </p>
    <p>////////////////////////////////////////////////////////////////////////////////</p>

";
  }
} else {
  echo "0 results";
}

// Closing mysql connection
$conn->close();
?>

暫無
暫無

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

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