mysqlのblob型が表示できません - PHPプロ!Q&A掲示板
PHP ver. 5.2.5
mysql ver. 4.1
以下のソースでmysqlのblob型を表示しようとしてるのですが、×マークで画像が表示できていない状態です。
■呼び出し元ソース
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<HEAD>
<TITLE>メニューページ</TITLE>
</HEAD>
<BODY>
<img src="shop_img.php?id=1&type=event">
</BODY>
</HTML>
■shop_img.php
※$id及び$typeは取得済み
$DB = AdoDB::getInstance();
$DB->connect(DbConstant::C_DB_HOST, DbConstant::C_DB_USER, DbConstant::C_DB_PASS, DbConstant::C_DB_NAME);
if (!$DB) {
die("接続に失敗しました。");
}
if (strcmp($type, "banner") == 0) {
$sql = 'select img_banner from shop_info where id = ?';
$imgField = 'img_banner';
} else if (strcmp($type, "event") == 0) {
$sql = 'select img_event from shop_info where id = ?';
$imgField = 'img_event';
}
$stmt = $DB->Prepare($sql);
$resultSet = $DB->execute($stmt, array($id));
if (!$resultSet) {
echo "エラー:".$DB->ErrorMsg()."\n";
}
while (!$resultSet->EOF) {
$image = $resultSet->fields[$imgField];
$resultSet->moveNext();
}
//**********************
//* 画像表示部
//**********************
header("Content-type:image/gif");
print (base64_decode($image));
}
以上がソースになります。
headerを外すと文字化けしたような文字列(base64エンコードされた?)が画面に表示されます。
データは取得できているようなのですが、どうしても表示されません。
かなり長い間悩んでいますのでどうか宜しくお願いします。
この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。





ページのトップへ


一つの目安として、ECサイトの購入情報など絶対に消えてはいけないものはDBに、カートなどの一時的に使用する情報や、ユーザに任意のタイミングで消去されても構わないものはセッションにと使い分けるといいでしょう。