みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

phpでmysqlから画像パスを出力する

phpを勉強始めたばかりで、データベースを使う必要がでてきたため、初心者サイトを
読んでいるのですが、一点質問があります。
行いたい事は、データベースに保存した画像パスをphpで出力するだけなのですが、パスが
文字列として扱われてしまっています。画像を出力するにはどうすれば良いでしょうか?
例えば以下のようなphpプログラムで、nameには画像パスである 「abc.jpg」という文字が
入っていたとすると以下ではそのままabc.jpgという文字列が出力されてしまします・・・。
<?php

$pdo = new PDO("mysql:dbname=aaa", "root");
$pdo->query("set names utf8;");
$st = $pdo->query("SELECT * FROM bbb");
while ($row = $st->fetch()) {
$name = htmlspecialchars($row['name']);
echo '<img src="$name">';
}
?>

投稿日時 - 2013-09-11 20:28:43

QNo.8259729

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

No.1さんもおっしゃっているように
> 「abc.jpg」が表示されるとは思えませんが

仮に

echo "<img src=¥"$name¥">";

だとして、出力結果が

<img src="abc.jpg">

となったとしたら、これはこれで正しいと思いますよ。

abc.jpgがその場所にあれば、正しく表示されると思います。

画像そのものを出力したい、つまり
(たとえば)
/abc.jpg

がリクエストされたとき、PHPを実行して画像(バイナリ)を返したい、ということならば、

1.まずそのURLがリクエストされたときPHPが実行されるようにウェブサーバの設定をする
2.(画像そのものがDBに格納されているとして)PHPで先のPDOなどを使って画像を取得する
3.header関数でContent-Typeを指定して(header('Content-type: image/jpeg');)
4.2の画像を出力する

という流れになると思います。


画像をDBに格納しておらず、どこかのディレクトリに保存しているなら、

1.そのディレクトリをウェブサーバ経由で外部ネットワークから参照できるようにウェブサーバを設定する
  またはウェブサーバ経由で外部ネットワークから参照できるディレクトリにその画像を保存する
2.そのディレクトリに対応するURLパスを先のDBに保存する
3.先の$nameが2のURLになっていればOK

と思います。ウェブ上から見えないどこかのディレクトリに保存してPHP経由で返してもよいと思います。

投稿日時 - 2013-09-24 23:53:03

htmlspecialcharsが要らないのではないでしょうか?

投稿日時 - 2013-09-14 21:29:07

ANo.1

>そのままabc.jpgという文字列が出力

echo '<img src="$name">';
という記述を見る限り、シングルクォーテーションで囲まれている
文字列を出力しているので$nameは展開されないので
「abc.jpg」が表示されるとは思えませんが?

投稿日時 - 2013-09-12 09:19:25

あなたにオススメの質問