0

データベースからの他の情報とともに画像を表示しようとしています。

PHP

  <?php
               mysql_connect("localhost","111","222") or die("Could not connect to localhost");
               mysql_select_db("movies") or die( "Could not connect to database");

               $result = mysql_query("SELECT * FROM allmovies");
               if ($result == false )  die(mysql_error()); 
               while($row = mysql_fetch_array($result))
               {
                    echo "<img src=' . $row['image'] . '>";
               ?>

お気に入り:

タイトル: 何とか
価格: 何とか
画像:<img src=rarara">

すべての MySQL から 1 つのページに?

4

2 に答える 2

2
  1. 画像データをデータベースに保存しないでください。通常、画像データはこれには適しておらず、データを返す MySQL 接続で余分なオーバーヘッドが発生します。画像ファイルへのパスを保存し、それを提供する必要があります。
  2. それを行うことを主張する場合は、次のようなものを使用して、画像の種類に基づいた適切なヘッダーを使用して、一度に1 つの画像のみを返す必要があります。

    $imagedata = data_from_mysql();
    header('Content-Length: ' . sizeof($imagedata) );
    header('Content-Type: image/png');
    echo $imagedata;
    exit;
    
  3. ページのソースを肥大化させ、遅く、管理しにくく、ほとんどキャッシュできないようにしたい場合は、次のようにします。

    while( $imagedata = data_from_mysql() ) {
      echo "<img src='data:image/png;base64," . base64_encode($imagedata) . "'>";
    }
    

これらが使用すべきではないひどいアイデアであることを十分に強調することはできませんが、理性に耳を傾けることができなければ、少なくとも正しい方法で悪いことを行うことができます.

于 2013-10-04T17:56:11.350 に答える
1

imagecreatefromstring()を使用できます

$im = imagecreatefromstring($row['image']);
if ($im !== false) {
    ob_start();
    imagejpeg($im);
    $data = ob_get_contents();
    ob_end_clean();
    echo '<img src="data:image/jpg;base64,' .  base64_encode($data)  . '" />';
}

私の意見ですが、画像をファイルサーバーに保存してから、画像全体をブロブとして保存するのではなく、パスへの参照を保存する方が少し正気でしょうか?

于 2013-10-04T18:02:26.217 に答える