※ ChatGPTを利用し、要約された質問です(原文:mysqlに保存した画像を表示したい)
MySQLに保存した画像を表示する方法
このQ&Aのポイント
MySQLに保存した画像を表示する方法について教えてください。
質問者はフォームから画像をMySQLに保存し、画像を表示させたいと考えています。
質問者はview.phpで画像を表示しようとしていますが、画像が表示されず困っています。どうすれば解決できるでしょうか?
フォームからmysqlに画像(jpg形式)を保存しました。
カラム名はmain_imgでblob型です。
流れとしては
1:入力フォーム
// イメージ取得
$image = file_get_contents($_FILES['image']['tmp_name']);
// 取得したイメージをセッションに代入
$_SESSION['regist']['image'] = $image;
2:確認ページ
特になにもせず
3:登録完了ページ
$_SESSION['regist']['image']をmysql_real_escape_stringし
変数名を$imageに変更。
カラム名main_imgに$imageをINSERT
この段階でphpmyadminを見るとカラム名main_imgには
[BLOB - 4.3 KiB]となっております。
次にmysqlに保存した画像を表示させたいと思い
---view.php---
$res =& $mdb2->query('SELECT * FROM products');
while ($row = $res->fetchRow()) {
$img_list['main_img'] = $row['main_img'];
}
$mdb2->disconnect();
header('Content-type: image/jpeg');
echo $img_list['main_img'];
---view.html---
<img src="view.php?id=2" />
としたのですがなぜか画像が表示されません。
header('Content-type: image/jpeg');をコメントアウトすると
意味不明な文字列?が表示されます。
view.phpにアクセスするとhttp://~~/view.phpとurlが
画像として表示されFireFoxでブラウザを更新すると一瞬だけ
『画像ファイル "http://~~/view.php" は壊れているため、表示できませんでした。』
と表示されます。
ie,safariでも試しましたが画像は表示されませんでした。
調べてみたのですが同じような事例がみつからなかったのですが
解決するにはどうすればいいものでしょうか?
補足
お返事ありがとうございます。 まる二日悩んでも解決せずで困っておりました...>< 引き続き試していたのですが結果として mysql_real_escape_stringをせずにinsertすると正常に画像が 表示するようになりました。 原因がなぜかはわかりませんが >(4)insert時のmysql_real_escape_string()の利用方法 が原因なようでした。 利用方法についてですがforeachで一括で変換しています。 foreach ($_SESSION['regist'] as $s_key => $s_val) { $$s_key = mysql_real_escape_string($_SESSION['regist']["$s_key"]); } 動作としましては例えば $_SESSION['regist']['hoge'] $_SESSION['regist']['hoge1'] とある場合 $hoge = mysql_real_escape_string($_SESSION['regist']['hoge']) $hoge1 = mysql_real_escape_string($_SESSION['regist']['hoge1']) となり$hoge,$hoge1をinsertしています。 mysql_real_escape_stringが鍵となっているようなのですが 外すわけにもいかず悩みどころです。