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 类型文本/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 回答