web-dev-qa-db-ja.com

MySQLデータベースから画像を取得し、htmlタグで表示する方法

Phpmyadminを使用してテーブルを持つMySQLデータベースを作成しました。 jpegファイルを保持するために、BLOB列を持つこのテーブルを作成しました。

Php変数$resultに関してここに問題があります。

これまでの私のコード:(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>

PHPから変数$ resultをHTMLに取得して、<img>タグで表示するにはどうすればよいですか?

30
exxcellent

できません。画像データを返す別のphpスクリプトを作成する必要があります。 getImage.php。 catalog.phpを次のように変更します。

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

次に、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'];
?>
41
megaflop

技術的には、 data URIs を使用して、画像データをimgタグに入れることもできますcan

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

ほとんどの場合、別のスクリプトを介して画像を提供した方がよい場合もありますが、これが役立つ可能性がある特別な状況があります daiscogが示唆するように

27
Ilmari Karonen

情報を取得して、必要なものに分析する必要があります。

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

mysql_query()の後に$row = mysql_fetch_object($result);を追加します。

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

1
Punit

まず、クエリの結果セットから結果の行を取得する必要があります。そのために mysql_fetch_row を使用できます。フェッチされた行ができたので、取得した値にアクセスして、srcにエコーできます。

例えば:

$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

データベースに挿入する前にスラッシュを追加したので、フェッチするときに再びスラッシュを削除しましたstripslashes()。私のために働くコードを共有しています。

Mysql dbに挿入する方法(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);

次に画像にアクセスします

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

それが誰かを助けることを願っています

ありがとう。

0
Ganesh