- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:mysqlに保存した画像を表示したい)
MySQLに保存した画像を表示する方法
このQ&Aのポイント
- MySQLに保存した画像を表示する方法について教えてください。
- 質問者はフォームから画像をMySQLに保存し、画像を表示させたいと考えています。
- 質問者はview.phpで画像を表示しようとしていますが、画像が表示されず困っています。どうすれば解決できるでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
foreachループ内に if文で分岐させて、画像用だけescapeしないか、base64_encodeするか、とすればよいでしょう。 foreach ($_SESSION['regist'] as $s_key => $s_val) { if( $s_key != 'image' ){ $$s_key = mysql_real_escape_string($s_val); }else{ $$s_key = base64_encode($s_val); } } // base64_encode したなら、取り出し時に base64_decode すること
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
回答No.1
複数のことをが絡まっていそうなのでひとつひとつクリアして いってはいかがでしょうか? (1)insert時のアップロード処理 (2)アップロードにセッションを使う部分 (3)セッションにつかっている配列処理 (4)insert時のmysql_real_escape_string()の利用方法 (5)MySQLのデータ型の問題 (6)その他何らかの問題がありうまくデータが保存されていない (7)表示のデータ抽出方法の問題 (8)エスケープされた箇所が戻っていない (9)MIMEの問題 すべての部分があやしいのでなんともいえません。 可能性としてはエスケープ処理の問題がかなりあやしそうですが・・・。 画像以外のデータもつかって不正がないかデバッグしていくしかないでしょう。
補足
お返事ありがとうございます。 まる二日悩んでも解決せずで困っておりました...>< 引き続き試していたのですが結果として 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が鍵となっているようなのですが 外すわけにもいかず悩みどころです。