• 締切済み

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">'; } ?>

みんなの回答

回答No.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経由で返してもよいと思います。

noname#184105
noname#184105
回答No.2

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

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

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

関連するQ&A