0

こんにちは、私のphpに問題があり、解決策が見つかりません

<?php 
$pid = $_REQUEST['pid'];
$rs = mysql_query("SELECT image from images where patient_id='$pid'") or die(mysql_error());
while($row = mysql_fetch_assoc($rs));
{
$imagebytes = $row['images'];
header("Content-type: image/jpg");
echo $imagebytes;
}
?>

私はこれを別のphpに呼び出します

echo '<img src="myimage.php?pid=51">';

しかし、「リソースは画像として解釈されましたが、MIME タイプ text/html として転送されました」というエラーが表示され続けます。

4

1 に答える 1

0

これを試して:

<?php
if( headers_sent() ) { die('headers already sent by something else'); }
else { header("Content-type: image/jpg"); }

$pid = intval($_REQUEST['pid']);
$rs = mysql_query("SELECT image from images where patient_id=$pid LIMIT 1") or die(mysql_error());
if($row = mysql_fetch_assoc($rs)) {
    echo $row['image'];
}
exit;

最も基本的な入力検証を行うため、SQL が挿入されないようにし、何かが既にヘッダーを送信しているかどうかを確認し、コードから不可解なループを取り除きます。

また、死にかけている可能性が高い理由は、 を持っているがSELECT image FROM images、アクセスしようとしていたフィールドが$row['images']存在しないことです。エラー メッセージが出力され、ヘッダーtext/htmlを設定しようとする前にデフォルトのヘッダーが送信される可能性がありましたimage/jpeg

また、なぜ$pidクエリで引用符を付けたのですか? 文字列ですか?整数を文字列として保存していないことを教えてください。

于 2012-10-24T16:46:50.210 に答える