2011-10-17 24 views
0

BLOBを使用してイメージをmySQLに格納する代わりに、参照パスを使用することにしました。だから、私は "localhost" をフォルダに画像を保存:BLOBから参照パスを使用するように移動

私のデータベースにあるので
localhost/dvd_artwork/image.jpg 

、コラム "dvdimage_path" 私はしかし私のidは= 1

TEXT "dvd_artwork/image.jpg" を持っているの下で、私は

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

私getimage.php:

これは瞬間

私catalog.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_path FROM dvd WHERE id=$id"; 
$result = mysql_query("$sql"); 
$row = mysql_fetch_assoc($result); 
mysql_close($link); 

echo $row['dvdimage_path']; 

?> 

何か間違いがありますか?

+1

'echo $ row ['dvdimage_path'];'は画像のバイナリデータを持つ 'image/*'コンテンツタイプを予期していたブラウザに 'text/html'コンテンツを1行だけ送ります。 –

+0

パスの最小部分を保存することをお勧めします。あなたの例では、データベースにlocalhostを格納すべきではありません。代わりに、設定ファイルに格納します。そうしないと、サイトを 'http:// localhost'から' http:// www.example.com'に移動すると問題が発生します。 –

+0

Salmanは完全に正しいです。ヘッダーをjpg:header( 'Content-Type:image/jpeg')に設定する必要があります。次のようにします:echo file_get_contents($ row ['dvdimage_path']); – SERPRO

答えて

1

から引用符を削除する - のgetImageは、文字列ではなく、画像を返す...

をあなたはおそらくのgetImageのHREFを交換し、ちょうど生成したいですこのようなページ:

<?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_path FROM dvd WHERE id=$id"; 
$result = mysql_query($sql); 
$row = mysql_fetch_assoc($result); 
mysql_close($link); 

?> 
<img src="<?= $row['dvdimage_path'] ?>" alt="" width="175" height="200" /> 

...か、パス上のfile_get_contentsを使用したい場合、適切なヘッダとそれをエコー:

<?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_path FROM dvd WHERE id=$id"; 
$result = mysql_query($sql); 
$row = mysql_fetch_assoc($result); 
mysql_close($link); 

header('Content-Type: image/jpeg'); // Or png, or whatever... 
echo file_get_contents($_SERVER['DOCUMENT_ROOT'].$row['dvdimage_path']); // might need a slash between the two variables here... 

?> 

できるだけ最初の方法をお勧めします。サーバーの設定で通常のヘッダーを使用できるという利点があります。

+1

+1。 –

+0

@rickbradshaw私はちょうどこの問題を処理するためのあなたの最初の方法に関して質問があります。だから私はあなたの方法は、私のcatalog.phpファイルの本体にPHPのコードを置くことによって行ったが、私は 'の注意:未定義のインデックス:IDのC:\ xampp \ htdocs \ catalog.phpのxxx'で私は私たちはここにIDがありません。このIDはどこにありますか? – exxcellent

+0

良い点は、$ id = 1と言うように設定し、それに応じて変更するか、すべて一緒に削除するか(クエリからも)、結果セットをループしてすべての画像を取得する必要があります。 –

2

これはどんな意味がありませんするmysql_query

// Change that 
$result = mysql_query("$sql"); 

// To that 
$result = mysql_query($sql); 
+0

これは全く違いはありません。 '' $ sql ''と' $ sql'は同等です。 –

+0

単一の変数をダブルクォートで解析することはできません。これにより、問題を処理するための両方の方法を示すために、解析時間が長くなります – OptimusCrime

関連する問題