質問編集履歴

2 該当の記述の削除

daiki_anisan

daiki_anisan score 12

2017/10/11 18:45  投稿

phpでmysqlに保存した画像を出力したい
phpでmysqlに保存した画像を取り出して表示するプログラムを作っています。
ですが、実行しても”~~~の画像は壊れています”と出て出力することができません
ご指摘いただければと思います。
###発生している問題・エラーメッセージ
```
画像ファイル~~~~は壊れているため表示できませんでした
###該当のソースコード
<?php
///////////////////////////////////////////////////////////////////////
$user = '';
$pass = '';
$pdo = new PDO('mysql:', $user, $pass);
///////////////////////////////////////////////////////////////////////
$date = $_REQUEST["date"];//送られてきた変数(どこの投稿の画像か判別)
$sql = "SELECT * FROM KEIJIBAN";
   $pdh = $pdo->query($sql);
   foreach($pdh as $keiji)
   {
       if($_REQUEST == $keiji['date'])
       {
           $img = $keiji['imag_file'];
       }
   }
header("Content-Type: image/png");
echo $img;
?>
追記:mysqlへの画像の保存はpdoで行っています
追記:
/////変数の設定
   $name = $wow[2];
   $comment = $_POST['comment'];
   $date = date("Y/m/d H:i:s", time());
   $img = file_get_contents($_['imag_file']);//別フォームから送られてきたファイルが入っています
   $img = mysql_real_escape_string($img);
/////INSERT部分
$sql = "INSERT INTO KEIJIBAN2(name,comment,date,imag_file,video_file)VALUES(:name,:comment,:date,:imag_file,:video_file)";
   $stmt = $pdo->prepare($sql);
   $params = array(':name' => "$name",':comment' => "$comment",':date' => "$date",':imag_file' => "$imag",':video_file' => "$video_file");
   $stmt -> execute($params);
###試したこと
ネットにあった記述をいろいろ
別のサンプル画像を入れてみる
header関数を消してみる→ちゃんと画像ファイルとして入っている?
DBを作りなおしてみる
dateはちゃんと表示されます
###補足情報(言語/FW/ツール等のバージョンなど)
取り出し先のDB構成です
(name VARCHAR(32),
comment VARCHAR(100),
date CHAR(32),
imag_file BINARY(255),
video_file BINARY(255))';
格納している画像は、208バイトのpngファイルです
  • PHP

    29332 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    8808 questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

1 情報の追加

daiki_anisan

daiki_anisan score 12

2017/10/11 18:37  投稿

phpでmysqlに保存した画像を出力したい
phpでmysqlに保存した画像を取り出して表示するプログラムを作っています。
ですが、実行しても”~~~の画像は壊れています”と出て出力することができません
ご指摘いただければと思います。
###発生している問題・エラーメッセージ
```
画像ファイル~~~~は壊れているため表示できませんでした
###該当のソースコード
<?php
///////////////////////////////////////////////////////////////////////
$user = '';
$pass = '';
$pdo = new PDO('mysql:', $user, $pass);
///////////////////////////////////////////////////////////////////////
$date = $_REQUEST["date"];//送られてきた変数(どこの投稿の画像か判別)
$sql = "SELECT * FROM KEIJIBAN";
   $pdh = $pdo->query($sql);
   foreach($pdh as $keiji)
   {
       if($_REQUEST == $keiji['date'])
       {
           $img = $keiji['imag_file'];
       }
   }
header("Content-Type: image/png");
echo $img;
?>
 
追記:mysqlへの画像の保存はpdoで行っています  
/////変数の設定  
   $name = $wow[2];  
   $comment = $_POST['comment'];  
   $date = date("Y/m/d H:i:s", time());  
   $img = file_get_contents($_['imag_file']);//別フォームから送られてきたファイルが入っています  
   $img = mysql_real_escape_string($img);  
 
/////INSERT部分  
$sql = "INSERT INTO KEIJIBAN2(name,comment,date,imag_file,video_file)VALUES(:name,:comment,:date,:imag_file,:video_file)";  
   $stmt = $pdo->prepare($sql);  
   $params = array(':name' => "$name",':comment' => "$comment",':date' => "$date",':imag_file' => "$imag",':video_file' => "$video_file");  
   $stmt -> execute($params);  
 
 
###試したこと
ネットにあった記述をいろいろ
別のサンプル画像を入れてみる
header関数を消してみる→ちゃんと画像ファイルとして入っている?
DBを作りなおしてみる
dateはちゃんと表示されます
###補足情報(言語/FW/ツール等のバージョンなど)
取り出し先のDB構成です
(name VARCHAR(32),
comment VARCHAR(100),
date CHAR(32),
imag_file BINARY(255),
video_file BINARY(255))';
格納している画像は、208バイトのpngファイルです
  • PHP

    29332 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    8808 questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る