美好的一天,我的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;
}
?>
我通过
将其称为另一个phpecho '<img src="myimage.php?pid=51">';
但我一直收到错误 “资源被解释为图像,但是作为MIME类型文本/ html进行了转换”我暂时停留了一段时间
答案 0 :(得分: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
在您的查询中引用?它是一个字符串?请告诉我你不是将整数存储为字符串。