web-dev-qa-db-fra.com

Comment récupérer des images de la base de données MySQL et les afficher dans une balise html

J'ai créé une base de données MySQL avec une table utilisant phpmyadmin. J'ai créé cette table avec une colonne BLOB pour contenir un fichier jpeg.

J'ai des problèmes en ce qui concerne la variable php $result ici.

Mon code jusqu'à présent: (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>

Comment obtenir la variable $ result de PHP dans le code HTML afin de pouvoir l'afficher dans la balise <img>?

27
exxcellent

Tu ne peux pas. Vous devez créer un autre script php pour renvoyer les données d'image, par exemple. getImage.php. Remplacez catalog.php par:

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

Alors getImage.php est

<?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

Techniquement, vous pouvez aussi placer des données d'image dans une balise img, en utilisant URI de données .

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

Cela pourrait même être utile dans certaines circonstances spéciales, même si dans la plupart des cas, il est préférable de servir l'image au moyen d'un script séparé comme le suggère daiscog .

25
Ilmari Karonen

Vous devez récupérer et disséquer les informations dans ce dont vous avez besoin.

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

ajoutez $row = mysql_fetch_object($result); après votre mysql_query (); 

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

1
Punit

Tout d'abord, vous devez extraire la ligne résultante du jeu de résultats de la requête. Pour cela, vous pouvez utiliser mysql_fetch_row . Maintenant que vous avez la ligne extraite, vous pouvez accéder à la valeur extraite et la renvoyer dans la source.

Par exemple:

$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

J'ai ajouté des barres obliques avant de les insérer dans la base de données. Le temps de la récupération, j'ai supprimé les barres obliques à nouveau stripslashes() et cela fonctionne pour moi. Je partage le code qui fonctionne pour moi.

Comment j'ai inséré dans mysql db (type blob)

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

Maintenant pour accéder à l'image

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

J'espère que ça va aider quelqu'un

Merci.

0
Ganesh