it-swarm.com.de

Abrufen von Bildern aus der MySQL-Datenbank und Anzeige in einem HTML-Tag

Ich habe eine MySQL-Datenbank mit einer Tabelle mit phpmyadmin erstellt. Ich habe diese Tabelle mit einer BLOB-Spalte erstellt, um eine JPEG-Datei aufzunehmen.

Ich habe Probleme mit der PHP-Variable $result hier.

Mein bisheriger Code: (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>

Wie bekomme ich die Variable $ result von PHP in den HTML-Code, damit ich sie im Tag <img> anzeigen kann?

27
exxcellent

Du kannst nicht Sie müssen ein anderes PHP-Skript erstellen, um die Bilddaten zurückzugeben, z. getImage.php. Ändern Sie catalog.php in:

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

Dann ist 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'];
?>
38
megaflop

Technisch gesehen können Sie can auch Bilddaten in ein img-Tag einfügen, indem Sie data URIs verwenden.

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

Es gibt einige spezielle Situationen, in denen dies sogar nützlich sein kann. In den meisten Fällen ist es jedoch besser, das Image durch ein separates Skript wie von Daiscog vorgeschlagen bereitzustellen.

25
Ilmari Karonen

Sie müssen die Informationen abrufen und zerlegen, was Sie benötigen.

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

füge $row = mysql_fetch_object($result); nach deinem mysql_query () hinzu; 

ihre HTML <img src="<?php echo $row->dvdimage; ?>" width="175" height="200" />

1
Punit

Zunächst müssen Sie die resultierende Zeile aus der Ergebnismenge der Abfrage abrufen. Dafür können Sie mysql_fetch_row verwenden. Nun, da Sie die abgerufene Zeile haben, können Sie auf den abgerufenen Wert zugreifen und ihn in der Befehlszeile wiederholen.

Zum Beispiel:

$sql = "SELECT dvdimage FROM dvd WHERE id=1";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
?>
<img src="<?=$row[0]?>" width="175" height="200" />
<?
1
Marcus

Ich habe vor dem Einfügen in die Datenbank Schrägstriche hinzugefügt, also habe ich zum Zeitpunkt des Abrufs die Schrägstriche wieder entfernt stripslashes() und es funktioniert für mich. Ich teile den Code, der für mich funktioniert.

Wie ich in MySQL Db (Blob-Typ) eingefügt

$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);

Nun auf das Bild zugreifen

$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']) ).'"/>';

Ich hoffe es hilft jemandem

Vielen Dank.

0
Ganesh