2011-12-08 4 views
0

ここにPHPコードがあります。私が基本的にしようとしているのは、mySQLデータベースから単一のイメージを表示することですが、私の人生にとってはわかりません。MYSQLからPHP経由でHTMLファイルに画像を表示しようとしています。私のコードで何が間違っていますか?

<?php 
    $port = "****"; 
    $server = "****".$port; 
    $dbname ="****"; 
    $user = "****"; 

    $conn = mysql_connect ("$server", "$user", "$pass") or die ("Connection 
    Error or Bad Port"); 

    mysql_select_db($dbname) or die("Missing Database"); 

    ?> 

    <!doctype html public "-//w3c//dtd html 4.0 transitional//en" 
    "http://www.w3.org/TR/REC-html40/strict.dtd"> 
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" 
    /> 
    <title>Query 3</title> 
    </head> 

    <body bgcolor="white"> 


    <hr> 


     <?php 
    $speakerPic = $_POST['speakerPic']; 
    $query = "SELECT speaker.speaker_picture FROM Speaker JOIN Contact USING(contact_id) 
    WHERE Contact.lname = "; 
    $query = $query."'".$speakerPic."';"; 
    ?> 

     <p> 
    The query: 
    <p> 
    <?php 
    print $query; 
    ?> 

    <hr> 
    <p> 
    Result of query: 
    </p> 

    <?php 
    $row = mysql_fetch_array($query); 
    $content = $row['image']; 

    header('Content-type: image/jpg'); 
     echo $content; 
?> 

</body> 
</html> 

ここでは機能しないものはありますか?私は本当にあなたの助けに感謝します。

+0

必須: '$ speakerPic'は、SQLインジェクションに開いています。 – nickb

+0

あなたのDoctypeはナンセンスです。あなたは過渡的な公開識別子と厳密なシステム識別子を持っています。彼らは一致しません。 [実際のdoctype](http://www.w3.org/QA/2002/04/valid-dtd-list.html)を選んでください。 – Quentin

+0

さらに@ nickbのコメント:http://bobby-tables.com/ – Quentin

答えて

0

mysql_fetch_arrayに電話する前にmysql_queryに電話する必要があります。あなたがイメージでURIのポインティングが含まれていsrc属性で<img>タグを使用するHTML文書に画像を含めるには

$query = $query."'". mysql_real_escape_string($speakerPic)."';"; 
+0

$結果変数を追加しました。これを実行すると、HTMLページ自体からクエリを実行すると、次のエラーコードが表示されます。画像「http://......./query2.php」にはエラーが含まれているため表示できません。 – user1087799

1

$result = mysql_query($query); 
$row = mysql_fetch_array($result); 

また、あなたはそうのような$speakerPicをサニタイズする必要があります。

HTTP URI(データベースから画像データを取得して返すPHPスクリプトに当てはまる可能性があります)があり、画像がページに直接エンコードされたDATA URIである可能性があります。

イメージを扱う通常の方法は、イメージをファイルシステム上に保持し、URL(またはURLを構築できるファイルパス)をデータベースに保存することです。

あなたはできません。は、今しようとしているように、別のHTTP応答の途中でHTTP応答を吐き出すことができません。

+0

これは正しいです。また、SQL文字列のmysql_fetch_array()はあまり機能しません。クエリは(準備して)実行する必要があります。 – Konerak

0

あなたは、「イメージ」と呼ばれる何の行を持っていない、このようなクエリで再命名あなたの行を試してみてください。

SELECT speaker.speaker_picture AS image FROM ... 
関連する問題