2011-10-17 33 views
22

phpmyadminを使用してテーブルを持つMySQLデータベースを作成しました。私はjpegファイルを保持するBLOB列でこのテーブルを作成しました。MySQLデータベースから画像を取得し、htmlタグで表示する方法

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> 

がどのようにHTMLにPHPの変数$結果を得ることができますので、私はそれは<img>タグで表示することができますか?

+1

_Whaaaat_ issues?あなたは今あなたのコードが間違っていることを言う必要があります。 – Bojangles

+1

これらの結果をフェッチすることから始めることができます –

+0

BLOBイメージを表示するための構文がわかりません – exxcellent

答えて

33

あなたがすることはできません。画像データを返すために別の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']; 
?> 
+0

thnk @ daiscog.Itsはうまくいきます。 –

+0

と大変ありがとうございますが、私のdbには50枚近くの画像があります。ページ内に画像全体を表示するにはどうすればいいですか –

+2

DBから別の画像を取得するには、 'id' getパラメータを変更するだけです:' ... ' – megaflop

2

情報を取得して必要な情報に変換する必要があります。

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

最初に、結果の行をクエリの結果セットから取得する必要があります。そのためには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

img srcの中に生の画像データを置くことはできません。 OPは、画像ファイルへのパスではなく、画像データがデータベースに保存されていることを明確に示しています。また、 '<?='の使用は設定に依存するので避けてください。移植可能なコードではない – megaflop

+0

@daiscog私は質問を誤解しましたが、正解が受け入れられ、コードがmysqlからデータを取得私はそれをここに置く。 – Marcus

1

が)(あなたの後mysql_query $row = mysql_fetch_object($result);を追加することです。

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

+0

img srcの中に生の画像データを置くことはできません。 OPは、画像ファイルへのパスではなく、画像データがデータベースに保存されていることを明確に示しています。 – megaflop

+0

ありがとう、私は彼がパスにアクセスしていると思っていた。 – punit

21

技術的には、あなたすぎdata URIsを使用して、imgタグで画像データを置くことができます。

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

ほとんどの場合、あなたは別のスクリプトlike daiscog suggestsを介して画像を提供する方がいいでしょうが、これも、役に立つかもしれないいくつかの特別の事情があります。

+0

誰かがデータURIを提案するかどうか疑問に思っていました。それほど効率的ではないIMO(ブラウザ/プロキシキャッシングなし)ですが、確かに価値があります。 – megaflop

関連する問題