sql >> データベース >  >> RDS >> Mysql

MySQLデータベースからの画像が印刷されない

    これは、返送するデータが画像であることをブラウザが認識していないためです。 Webサーバーが要求に応答すると、コンテンツのタイプが指定され(したがって、Content-Typeヘッダー)、ページはテキストとして指定されます。これが画像タグが使用される理由です。画像タグは、「この場所にこの他のリソースを埋め込む」と言う機会を与えてくれます。コードが行うことは、画像のバイナリデータをテキストとして画面にダンプすることです。必要なものではありません。

    あなたがする必要があるのは、$ _ GETパラメータ(つまり、行ID)を受け入れるgetImage.phpなどの別のPHPページを作成することです。そのページはデータベースとechoにクエリを実行します Content-Typeヘッダーを指定する画像データ。

    これは、テストなしで作成した、SQLインジェクションやその他の潜在的な問題を処理しない概念実証コードです。

    header('Content-Type: image/png'); //change to the proper content type for your type of image
    
    $imageID = mysql_real_escape_string($_GET['q']);
    
    $result = mysql_query(sprintf('SELECT file_data FROM images2 WHERE id="%s" AND file_data IS NOT NULL LIMIT 1', $_GET['q']));
    
    if(mysql_num_rows($result) !== 1)
    {
      //a row wasn't found, so 404
      header('HTTP/1.0 404 File Not Found');
    }
    else
    {
      $row = mysql_fetch_object($result);
      echo $row['file_data'];
    }
    

    これで、既存のファイルにHTMLを作成するときに、次のようになります。

    echo '<td class="sitename2"><img src="./getImage.php?q='.$row["id"].'"/></td>';
    

    それに応じてSQL列名を調整します。

    乾杯。



    1. PHPコードをMySQLに保存し、実行できるようにします

    2. SQL Server R2 SSRS に対する Reporting Services のアクセス許可

    3. 特定のモデルの作成をリッスンし、これに基づいて(別のテーブルに)新しいモデルを作成するにはどうすればよいですか?

    4. PostgreSQLで配列を比較する方法