PHP+MYSQLにおける画像表示について

このQ&Aのポイント
  • PHP+MYSQLにおける画像の表示についての質問です。現在、画像掲示板を作成中で、テーブルの作成と画像の保存は完了しました。しかし、画像の呼び出しのPHPを作成する際に問題が発生しています。1枚目の画像は表示されるのですが、2枚目以降は表示されません。同様の質問を見たり、コードを変更してみたりしましたが解決できませんでした。他に解決策があるか教えていただきたいです。
  • PHP+MYSQLで画像を表示する際に問題が発生しています。テーブルには画像データが5つ保存されており、画像の呼び出しのPHPで表示させようとしています。しかし、1枚目の画像は表示されるのに、2枚目以降は表示されません。コードを変更してみたり、過去の質問を見てみたりしましたが解決策がわかりません。どうすれば解決できるのでしょうか?
  • 画像掲示板を作成中で、PHP+MYSQLで画像の表示をしようとしています。テーブルには画像データが5つ保存されており、画像の呼び出しのPHPを作成しましたが、1枚目の画像は表示されるのに、2枚目以降は表示されません。他の方法を試したり、コードを変更してみたりしましたが解決できませんでした。どうすれば解決できるのか教えてください。
回答を見る
  • ベストアンサー

PHP+MYSQLにおける、画像の表示について。

いつも参考にさせていただいております。 ありがとうございます。 さて、表題の件ですが、現在、画像掲示板を作成中です。 テーブルの作成が終わり、アップロードするPHPまでは完了。 画像がバイナリで保存されるところまでは作成が完了しました。 次に、呼び出しのPHPを作成しようと現在作成中ですが、ここで躓づきました。 テーブル Field | Type | Null | Key | Default | Extra | +-----------+------------+------+-----+-------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | commentid | int(3) | YES | | NULL | | | comment | mediumtext | YES | | NULL | | | picture1 | mediumblob | YES | | NULL | | このテーブルの中に、レコードが5つあり、それぞれカラムpicture1に画像データを持たせてあります。 このテーブルに対して、 <?PHP $s=mysql_connect("localhost","root","password") or die("登録フォーム接続に失敗しました。"); mysql_select_db("smartphone"); $result = mysql_query("SELECT * FROM commentmaster"); while($row = mysql_fetch_array($result)){ header("Content-type: image/jpeg"); print($row[3]); } exit(); ?> <html> <head> <title>コメント一覧</title> </head> </html> 以上のPHPファイルで画像の呼び出しをしようとしたのですが、 1枚目の画像は表示されるものの、2枚目以降の画像が表示されません。 ちなみに、 header("Content-type: image/jpeg"); print($row[3]); の部分を、 #header("Content-type: image/jpeg");←コメントアウトした。 print($row[0]);←picture1ではなく、IDを取得に変更 このように変更すると、カラム0のIDが5つ表示されます。 過去のコメントを拝見したのですが、機能的に無理なものなのか、書き方が悪いだけなのか。 また、別の方法があるのかの判断が付きませんでしたので、質問をさせていただきました。 お手数をおかけしますが、よろしくお願いいたします。

  • PHP
  • 回答数5
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5078/13268)
回答No.4

このプログラムだとブラウザで1回アクセすると5枚の画像を出力することになりますよね。 でも、ブラウザはサーバ上の画像ファイルにアクセスした時、1枚の画像が返ってくることを期待しています。だから1枚しか画像が出ません。(HTTPでは1アクセス1ファイルです) しかも画像データと一緒にHTMLまで出力しているので、基本的には壊れたデータとして扱われてもしかたがありません。 まず、HTMLの出力と画像の出力を分けなければいけません。 HTMLは <html> <head> <title>コメント一覧</title> </head> <body> <p><img src="1枚目">コメント<p> <p><img src="2枚目">コメント<p> <p><img src="3枚目">コメント<p> <p><img src="4枚目">コメント<p> <p><img src="5枚目">コメント<p> </html> といった形が必要でしょうから、まずこれを出すプログラムを書きます。 次に別のPHPで作った画像を出力するためのプログラムを作り、imgタグのsrcにそのプログラムへのパスとGETメソッドで画像のIDを渡しましょう。 画像を出力するためのプログラムでは、GETメソッドで渡されたIDをキーにデータベースからpicture1を取り出し、その画像だけ出力させることで画像が表示できます。

sakurihara
質問者

お礼

出来ました。NO.5の方と併せて読んで出来ました!

その他の回答 (4)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.5

>1枚目の画像は表示されるものの、2枚目以降の画像が表示されません。 どういうロジックでしょうか・・・ 今やっているのは5枚分の画像データを冗長につなげてロードしているだけです 5枚の画像を表示したいなら、idを指定して呼び出せる画像ローダを用意し <img src="loader.php?id=1">のように呼び出すのが妥当です

sakurihara
質問者

お礼

NO.4の方と併せて読んで出来ました! ありがとうございました。 下記、今回成功したコードです。 $re=mysql_query("SELECT * FROM commentmaster join usermaster on commentmaster.userid = usermaster.id and commentmaster.threadnum = $threadnum"); while($kekka=mysql_fetch_array($re)){ print$kekka[1]." "; print$kekka[10]." "; print$kekka[11]." "; print$kekka[4]; print"<br>"; print$kekka[2]; print"<br>"; print"<img src='callpicture1.php?id=$kekka[0]'>\n"; }

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.3

#1、2です。 解決に至らず、申し訳ない…。 実は私も数年前に同じようにheader()を出力して失敗したことがありました。 そのときは、header()を使わずにprint()でヘッダ部分を出力してなんとかしのいだような記憶がありますが、古い話で今はphpに触っていないので思い出せません。 m(_ _)m

sakurihara
質問者

お礼

とんでもありません。 こんなはやい時間からお手間をとらせてしまい、申し訳ありません。ありがとうございました。

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.2

#1です。 取り敢えず、header()をwhile()の前に出してみたら?

sakurihara
質問者

お礼

重ね重ね、ありがとうございます。 headerの位置変更を試してみましたが、一枚しか表示がされませんでした。 併せて、後々のことを考えると、コメントも併せてレコード毎に表示しなければならず、headerを使用した方法では、どうも無理のようでした。別の方法が無いか調べて見ます。

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

header()って、print()の後に出力したらエラーになりませんか? 一番最初に出力しなきゃ駄目だった気がするが…。 違っていたら、ごめんね~。

sakurihara
質問者

お礼

こんな、朝早くにお返事ありがとうございます。 httpdのエラーログを確認しましたら、確かにline12でエラーが出ていました。 では、どうやって機能を実現すべきか・・・。

関連するQ&A

  • MYSQLでPHPから画像表示したい

    以下でPHPとMYSQLにて画像jpgを表示できたのですが、 header("Content-type: image/jpeg"); $result = mysql_query("SELECT * FROM test"); $row = mysql_fetch_assoc($result); print ($row['image']);これだけなら表示OK。 しかし、 テーブルタグの中にprint ($row['image']);をいれたり while文で囲んだりすると、文字の羅列になってしまいます。好きな場所にprint ($row['image']);で表示するには どうしたらいいのでしょうか?

    • ベストアンサー
    • PHP
  • PHP + MySQL で画像データ表示

    PHP5 + MySQLでホームページを作成しております。 画像をバイナリデータでDBに登録するとことまではできたのですが、その画像データをどうやってテンプレートに表示させるかがよく分からず、質問させていただきます。 環境は下記の通りです。 ======================= サーバ:CentOS5.4(i386版) ※Apache、PHP5、MySQL、phpMyAdminはインストール済み 使用言語XHTML、CSS、JavaScript、PHP、MySQL(それぞれ別ファイルで作成しております) ======================= 現在までできている内容としては、 テンプレートのフォーム <input type="file" name="upload_img"></input> から画像を選択して、PHP側で$_FILEで受け取った後に 画像専用のテーブル カラム名:USER_IMG データ型:MIDIUMBLOB に受け取った画像のバイナリデータをinsertするところまでです。 この後に、そのバイナリデータをテンプレート上に表示させたいのですが、その方法がよく分かりません。 この質問をする事前に、参考になりそうなサイトをいくつか調べていて、 ・テーブルには画像以外にMIMEタイプを入れるカラムを用意して、MIMEタイプをもとにheaderのContent-typeを指定する ・Content-type: text/html; でも一応画像を表示させることはできる ということは分かりました。 ですが、今作っているテーブルにinsertした画像を表示させるhtmlは Content-type: text/html で作成しており、そのテンプレート内に <img src="画像パス/画像名.gif"></img> といった形で表示させたい場合に、画像のパスはどうやって指定してあげたらよいのか分かりません。 また、そのページのContent-typeは Content-type: text/html ではなく、MIMEタイプから対応したContent-typeにした方が良いのでしょうか? お分かりになる方いらっしゃいましたら、ご教授のほどお願い致します。

    • ベストアンサー
    • PHP
  • mysqlに保存した画像の表示がうまくいかない

    phpとmysqlで検索システムを作っています。 今回、mysqlにテキストデータと一緒に画像も保存し検索結果を表示する時に画像も一緒に表示されるようにしたいと考えています。 ひとまずテキストデータは問題なく保存、検索、表示ともに正常に動作していますが、画像がどうしてもうまく表示されません。 DB内を確認してみると、保存はきちんとされているようなのですが。 わかる方がいらっしゃいましたら、アドバイスをいただけないでしょうか? 以下にコードの内容を記載します。テキストデータは正常に動作するので、画像の表示に関する部分だけ記載させて頂きます。 ※検索結果の該当フィールドのidをキーとして渡して、該当するidの画像(DB内のimage1)を表示する。 よろしくお願いします。 【mysqlテーブル】 create table entries ( id int not null auto_increment primary key, name varchar(255), address varchar(255), image1 MEDIUMBLOB NOT NULL, image2 MEDIUMBLOB NOT NULL, ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 【result.php】 //画像表示箇所 <?php echo '<img src="get_image.php?id=' . $row['id'] . '">' ?> 【get_image.php】 <?php $id = $_GET['id']; header('Content-Type: image/jpg'); echo $row['image1']; ?>

    • ベストアンサー
    • PHP
  • PHP・MySQLでの画像(BLOB型)表示方法

    初めまして。PHP・MySQLの初心者で大変恐縮ではございますが、 お力を貸していただければ嬉しく思います。 現在、商品を紹介するシステムを制作しておりまして、 PHPを使ってMySQLに画像をBLOB型(mediumblob)で保存し、 単体表示するところまではできました。 しかし、私が実装したい事としまして、商品の一覧表示として 「商品のメイン画像」と 「商品の支払い方法をOKとNGで2つの画像を選択して表示」 (例えば、銀行振込OKという画像と銀行振込NGという画像をその商品によって使い分ける) ような形でMySQLに登録し、表示したいと思っております。 そこで商品1つにつき、その都度「OK」「NG」の画像を登録してもよかったのですが、 リレーションを設定した方が効率がいいと思い、商品のメイン画像の含まれた紹介するメインテーブルと 支払い方法画像テーブルの2つをMySQLに登録しました。 【商品紹介メインテーブル】 テーブル名:lineup id---- name -------main_images----------- mime------- ・・・ 1 ---- item1 ---- [BLOB - ××KiB] ----- image/jpeg ---- ・・・ 2 ---- item2 ---- [BLOB - ××KiB]  ----- image/jpeg ---- ・・・ ・・・ -- ginkouhurikomi_images ---- creditcard_images ・・・ ---------- hurikomiOK ---------------- creditcardOK ・・・ ---------- hurikomiNG ---------------- creditcardNG 【支払方法画像テーブル】 テーブル名:lineup_houhou id--------- name --------- houhou_images ------- mime 1 ---- hurikomiOK------- [BLOB - ××KiB]  ---- image/gif 2 ---- hurikomiNG------- [BLOB - ××KiB]  ---- image/gif 3 ---- creditcardOK ---- [BLOB - ××KiB]  ---- image/gif 4 ---- creditcardNG ---- [BLOB - ××KiB]  ---- image/gif ここで、lineup_houhouテーブルの「name」とlineupテーブルの「ginkouhurikomi_images」をリレーションし lineup_houhouテーブルの「houhou_images」を呼び出す為に、下記記載のindex.phpファイルに 【(1)】 $recordSet = mysql_query ("SELECT m.houhou_images, i.* FROM lineup i, lineup_houhou m WHERE i.ginkouhurikomi_images=m.name ORDER BY id DESC"); としました。 また、一覧表示をするファイルとして用意してあるのが 【index.php】 <?php require ("dbconnect.php"); $recordSet = mysql_query ("SELECT m.houhou_images, i.* FROM lineup i, lineup_houhou m WHERE i.ginkouhurikomi_images=m.name ORDER BY id DESC"); ?> <html> <table> <tr> <th>ID</th> <th>商品名</th> <th>商品画像</th> <th>銀行振込画像</th> <th>クレジットカード支払画像</th> </tr> <?php while ($table = mysql_fetch_assoc($recordSet)) { ?> <tr> <td><?php echo (htmlspecialchars($table["id"])); ?></td> <td><?php echo (htmlspecialchars($table["name"])); ?></td> <td><img src="view.php?id=<?php echo (htmlspecialchars($table["id"])); ?>" /></td> <td><img src="view01.php?id=<?php echo (htmlspecialchars($table["houhou_images"])); ?>" /></td> <td><img src="view02.php?id=<?php echo (htmlspecialchars($table["〇〇〇〇"])); ?>" /></td> </tr> <?php } ?> </table> 【view.php】 <?php require ("../dbconnect.php"); $id = intval ($_GET["id"]); $mime = null; $sql = "SELECT main_images FROM lineup WHERE id = $id"; $result = mysql_query($sql); if (!$result) { echo ("SQLの実行に失敗しました"); echo (mysql_errno().": ".mysql_error()); exit; } if (mysql_num_rows($result) == 0) { $sql = "SELECT main_images, mime FROM lineup WHERE id = 1"; $result = mysql_query($sql); if (!$result) { echo ("SQLの実行に失敗しました"); echo (mysql_errno().": ".mysql_error()); exit; } } $row = mysql_fetch_row ($result); $imgdat = base64_decode ($row[0]); header ("Content-Type:".$mime); echo $imgdat; mysql_close (); ?> 【view01.php】 <?php require ("../dbconnect.php"); $id = intval ($_GET["id"]); $mime = null; $sql = "SELECT houhou_images FROM lineup i, lineup_houhou m WHERE i.ginkouhurikomi_images=m.name"; $result = mysql_query($sql); if (!$result) { echo ("SQLの実行に失敗しました"); echo (mysql_errno().": ".mysql_error()); exit; } if (mysql_num_rows($result) == 0) { $sql = "SELECT houhou_images, mime FROM lineup i, lineup_houhou m WHERE i.ginkouhurikomi_images=m.name"; $result = mysql_query($sql); if (!$result) { echo ("SQLの実行に失敗しました"); echo (mysql_errno().": ".mysql_error()); exit; } } $row = mysql_fetch_row ($result); $imgdat = base64_decode ($row[0]); header ("Content-Type:".$mime); echo $imgdat; mysql_close (); ?> ここで2つの質問があります。まずMySQLの管理方法です。 現状、呼び出すカラム名ごとでしか【(1)】のmysql_query文から画像ファイルを呼び出せない状況です。 自分で考えて、一度lineupテーブルの「ginkouhurikomi_images」と「creditcard_images」を1つにまとめて 「shiharai_images」を作成し、試してみましたが、力不足で上手く呼び出すことはできませんでした。 もう1つはview.phpの作成方法です。 こちらも同じく、呼び出すカラム名ごとに上記view.phpやview01.phpを作成している状況ですが、 上手に1つのファイルにまとめて、使い回しの効くファイルを制作することはできないでしょうか? 改善方法や、このような場合のオススメな方法がありましたら教えていただきたく思います。

    • ベストアンサー
    • PHP
  • mysqlに保存した画像を表示したい

    フォームから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でも試しましたが画像は表示されませんでした。 調べてみたのですが同じような事例がみつからなかったのですが 解決するにはどうすればいいものでしょうか?

    • ベストアンサー
    • PHP
  • MySQLに保存した画像を表示したい

    <環境> PHP:4.3.8 MySQL:4.0.16 はじめまして、PHPを始めて駆け出しの者です。 MySQLに保存した画像を表示したいのですが なかなかうまくいきません。 なにかきっかけとなればと思い、書き込みをします。 どうぞご教授ください。 MySQLに画像を保存する事もやっとの事で出来たのですが、 ちゃんと保存されているか確認するため画像を表示してみよう と試みたのですが、またそこで壁にぶち当たってしまいました。 ネットの各所で検索し調べ、カタチまでは出来たのですが 肝心の画像が「×(バツ印)」になっていて表示出来ません。 +++img_upload.php+++ <?php if ($_POST["submit"]!=""){ if ($_POST["file_name"]=="none"){ print("ファイル名が入力されていません。<BR>\n"); exit; } $file_name = $_POST["file_name"]; if ($_FILES["upfile"]["tmp_name"]=="none"){ print("ファイルのアップロードができませんでした。<BR>\n"); exit; } $fp = fopen($_FILES["upfile"]["tmp_name"], "rb"); if(!$fp){ print("アップロードしたファイルを開けませんでした"); exit; } $imgdat = fread($fp, filesize($_FILES["upfile"]["tmp_name"])); fclose($fp); print("ファイルサイズ:{$_FILES["upfile"]["size"]}<BR>\n"); $len = strlen($imgdat); print("データ長 = $len<BR>"); $imgdat = addslashes($imgdat); $con = mysql_connect("***.***.***.***", "*****", "*****"); if (!$con){ print("MySQLへの接続に失敗しました"); exit; } if (!mysql_select_db("*****")){ print("データベースへの接続に失敗しました"); exit; } $encoded_file = base64_encode($imgdat); $sql = "INSERT INTO image (img_data) values ('$encoded_file')"; $result = mysql_query($sql); if (!$result){ print("SQLの実行に失敗しました<BR>"); print(mysql_errno().": ".mysql_error()."<BR>"); exit; } mysql_close($con); } ?> +++img_display.php+++ <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <TITLE>データベースへの画像の表示</TITLE> </HEAD> <BODY> <P>ファイルの表示</P> <FORM method="POST" enctype="multipart/form-data" action="img_display.php"> <INPUT type="hidden" name="MAX_FILE_SIZE" value="1048576"> 画像のファイルIDを入力してください<BR> <INPUT type="text" name="log_id"><BR> <INPUT type="submit" name="submit" value="送信"> <INPUT type="reset" name="reset" value="リセット"> </FORM> <?php if ($_POST["submit"]!=""){ $log_id = $_POST['log_id']; echo "<img src=\"get_image.php?log_id=" . $log_id . "\">"; } ?> </BODY> </HTML> +++get_image.php+++ <?php if ($_GET["log_id"]!=""){ $log_id = $_GET['log_id']; $con = mysql_connect("***.***.***.***", "*****", "*****"); if (!$con){ print("MySQLへの接続に失敗しました"); exit; } if (!mysql_select_db("******")){ print("データベースへの接続に失敗しました"); exit; } $sql = "SELECT img_data FROM image WHERE log_id='".$log_id."'"; $result = mysql_query($sql); if (!$result){ print("SQLの実行に失敗しました<BR>"); print(mysql_errno().": ".mysql_error()."<BR>"); exit; } $row = mysql_fetch_array($result); mysql_close($con); $decoded_file = base64_decode($row[1]); mb_http_output("pass"); header("Content-type: image/jpeg"); header("Content-Disposition: inline; filename=image.jpg"); echo $row[0]; } ?> DBのほうのテーブルには、「log_id」と「img_data」があります。 すみませんが、よろしくお願いします。

    • ベストアンサー
    • PHP
  • mysqlのblob型の画像表示について

    テーブルの項目にblob型を作成し、 phpでテーブルから取得した画像を画面に表示させたいのですが、 以下のように表示させることは可能でしょうか? test.php ---------- ここから画面 ---------------------------------------- 取得したblob型の画像その1.jpg 取得したblob型の画像その2.gif 取得したblob型の画像その3.png それぞれの画像の説明 ---------- ここまで画面 ---------------------------------------- テーブルへのデータ挿入はphpMyAdminから挿入しています。 header('Content-type: image/jpeg'); echo SQLで取得した値; のようにすればjpg画像は表示できましたが、gif画像とpng画像は表示できませんでした。 また、jpg画像のみを表示させることは出来ましたが文章を表示させることはできませんでした。 上記のように一つのphpファイルで複数表示させるのはできないのでしょうか?

    • ベストアンサー
    • PHP
  • php,mysqlにて画像パス保存/表示につい

    mysqlに画像パスを格納しておき、phpでブラウザに表示するという部分について質問があります。 以前画像を扱った際は、DBにそのまま画像データを格納していたのですが、一般的ではないということで画像パス使う方針にしました。 画像パスはthumbnailというカラムにvarcharで画像パスを格納しました。 今回ご相談させていただいた件では、主に画像の表示の部分にアドバイスをいただければと考えています。 以前画像をそのまま保存し表示するときは、get_image.phpのようなファイルを噛ませ、それをブラウザに読み込ませることで表示していたのですが、画像パスでも同じようなやり方でいいのでしょうか? ネットで調べてみたのですが、何となくしっくりこないというか、私の誤解もあるかもしれないのですがすっきりせず迷走中です。 どうか、アドバイスをご教示いただけないでしょうか。 ※以下は、試しにget_image.php噛ませてみた際のコードです。 <?php $id = $_GET['id']; //DB接続 ~省略~ $sql = "SELECT image FROM テーブル名 WHERE id='$id'"; $result = mysql_query($sql); if (!$result) { echo ("SQLの実行に失敗しました<BR>"); echo(mysql_errno().": ".mysql_error()); exit; } $row = mysql_fetch_array($result); mysql_close($con); $img_path = '$row['image']' $img = file_get_contents($img_path); header('Content-type: image/jpg'); echo $img; ?>

    • ベストアンサー
    • PHP
  • phpでSQLSV2005の画像を表示する方法

    いつもお世話になっております。 php5.1でSQL Server 2005のIMAGE型内の画像を表示するにはどうすればよいでしょうか。 以下のソースでデータを読み込んで出力しようとしていますが、 ブラウザには × が表示されてしまいます。 **** phpここから ************************************************************* header("Content-Type: image/jpeg"); header("Content-Disposition: inline;"); header("Content-Transfer-Encoding: binary"); $con = mssql_connect("xxDBサーバxx", "xxIDxx", "xxパスワードxx"); if (!$con) { print("データベースへの接続に失敗しました"); exit; } if (!mssql_select_db("xxDB名xx")) { print("データベースへの接続に失敗しました"); exit; } $sql = "select img_data from foo "; //img_data は IMAGE型 $result = mssql_query($sql); if (!$result) { print("SQLの実行に失敗しました<BR>"); exit; } $row = mssql_fetch_row($result); echo $row[0]; **** ここまで ******************************************************************** DBのフィールド img_data には数百KBの画像データが入っているはずなのですが、 試しに strlen($row[0])の値を見てみると、4096でした。 4KBしかデータを得れていない様に見えます。 もしかすると、特殊な変換をしないとデータを得ることができないかとも思ったのですが、 同じテーブルを使用するVB6.0のプログラムでは以下の様な問合せで表示できている様子です。 SQL: SELECT img_data FROM foo もしかすると、PHPは特殊な処理をしないとデータを得ることができないのでしょうか・・・? お詳しい方がいらっしゃいましたら、何卒ご教授をお願い申し上げます。 何卒よろしくお願い致します。

    • 締切済み
    • PHP
  • Apache,phpで画像が表示されない

    こんにちは Apache2.2、php5を使用しています。 ブラウザに画像を表示させたいのですが、URLで直接画像ファイルを指定するとファイルの場所を見せてしまうので、非公開のディレクトリの画像を表示させるようにphpのプログラムを呼び出して(引数をファイル名)にしています。 画像が「X」の状態で表示されません。(涙 header('Content-Type: ' . 'image/jpeg'); header('Content-transfer-encoding: binary'); header('Content-length: ' . filesize(/.../../$fileName)); header('Content-Disposition: attachment; filename="' . $fileName . '"'); のあとで、fopen() ->> fpassthru();で処理したのですが、小さい画像ファイルは処理は終わっていますが、「X」の状態で表示されて、大きい画像ファイルを指定するとfpassthru()の中で死んでしまいます。 fread ->> print ->> flush()ループで処理すると、flushの中で死んでしまいます。 error.logにも特に情報が残っていないので... 何かご存知の方はいらっしゃいませんか? よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう