2

「BLOB」で画像を保存したテーブルを作成しました。それらの画像を他のアイテムと一緒に表示する必要があります。しかし、これらの画像を同じページにまとめて表示する方法がわかりません。他のものをテーブルの形で表示する私のphpコードは次のとおりです。同様に、それに応じて画像を表示したかったのです。何か助けはありますか?

<?php
                $display_query = mysql_query("SELECT * FROM eportal");

                    echo "<table id='pageTable'><thead><tr><th>Item code</th><th>Description</th><th>Cost</th></tr></thead>";
                    echo "<tbody>";
                    while($row = mysql_fetch_array($display_query)){
                        print "<tr><td>".$row['itemid']."</td><td>".$row['description']."</td><td>";
                        print "&#8377;".$row['cost']."</td></tr>";
                    }
                    echo "</tbody>";
                    echo "</table>";
                    mysql_close($connection);

                ?>
4

5 に答える 5

2

画像をDBに保存するのは良い考えではありませんが、このようにする必要があると思われる場合は、DBテーブルからデータを取得し、base64(http://php.net/base64_encode)にエンコードしてからHTMLにエンコードできます次のように印刷します。

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot">

PHP を使用すると、次のように記述できます。

echo '<img src="data:'.$image_mime_type.';base64,'.base64_encode($image_data_from_db).'" alt="My image alt" />';
于 2012-06-01T13:03:40.180 に答える
0

Blob データを読み取り、ヘッダー タイプ image.. でファイルに書き込みます。印刷を試みます。画像ファイルが表示されます。

そして、DBサイズを増やしているため、画像やファイルをDBに保存することは本当に悪い習慣であり、パフォーマンスも低下します.Blobを画像に変換することをお勧めしますが、作業には適用しないでください. 画像を目的の場所に保存し、その場所のパスを DB に保存して、次回フェッチして保存します。

于 2012-06-01T13:00:08.597 に答える
0

他の人が言ったように、画像をデータベースに保存することは通常悪い考えです。

画像はHTTP、別のページ データと同じ応答で送信されません。

データベースから画像を表示するには、アイテム ID を指定してフィールドを読み取り、画像のバイナリ データを送信するスクリプトを実装する必要があります。フォームのスクリプトへのパスを指定します<img src="">

while($row = mysql_fetch_array($display_query)){
    print "<tr><td>".$row['itemid']."</td><td>".$row['description']."</td><td>";
    print "&#8377;".$row['cost']."</td><td>";
    print "<img src=\"image.php?id=".$row['id']."\"></td></tr>";

}

image.phpimage_blob指定されたの値を出力する別のスクリプトeportal.idです。また、ヘッダーに正しいサイズと MIME タイプを指定する必要があります。

画像をファイル(Webサーバーからアクセス可能)に保存し、ファイルへのパスをデータベースに保存することをお勧めします。

于 2012-06-01T13:00:22.117 に答える
0

画像をデータベースに保存したい場合は、データベースからそれらの画像を取得し、正しいヘッダーでブラウザーに渡す 2 つ目のスクリプトが必要になります。

header("Content-type: image/jpeg");
# 
# Replace this with database read:
# readfile('myimage.jpg');

また、使用する画像の種類を保存する必要があります。JPEG、GIF、または PNG ファイルのヘッダーは異なります。

于 2012-06-01T13:00:24.320 に答える
0

ブロブを保存することと、画像ファイルへのパスをディスクに保存することの議論は、何度も何度も議論されてきました。Microsoft は、それぞれの長所と短所を比較した研究論文を提供しています。そうは言っても、ブロブを画像として表示するには、別のページを呼び出して、ブラウザーに保存されている画像の種類を伝えるヘッダー情報を出力する必要があります。

例えば:

connectToDatabase();

$sql = "SELECT image_blob FROM eportal;";

$result = mysql_query($sql) or die(mysql_error());  
$row = mysql_fetch_array($result);

header("Content-type: image/jpeg");
echo $row['image_blob'];
$db->close();
于 2012-06-01T13:01:51.377 に答える