PHP-存储为BLOB的图像显示为断开的链接

PHP-存储为BLOB的图像显示为断开的链接,php,mysql,image,blob,Php,Mysql,Image,Blob,我正在用PHP开发一个存储应用程序,在显示MySQL数据库中存储的内容时遇到问题。我将图像存储为中型BLOB类型,我确信图像在上传到数据库期间和之后都已正确格式化。我可以直接从数据库下载图像,并将其作为jpeg图像查看 但是,如果我试图在网页中显示我的图像,我会得到一个损坏的图像图标。我能够从sql中获得图片显示的唯一方法是使用base64编码,但这不是我想要使用的方法 这是我的密码。它从数据库中获取所有产品,并在表行中显示它们的id、描述和图像 <!DOCTYPE html PUBLIC

我正在用PHP开发一个存储应用程序,在显示MySQL数据库中存储的内容时遇到问题。我将图像存储为中型BLOB类型,我确信图像在上传到数据库期间和之后都已正确格式化。我可以直接从数据库下载图像,并将其作为jpeg图像查看

但是,如果我试图在网页中显示我的图像,我会得到一个损坏的图像图标。我能够从sql中获得图片显示的唯一方法是使用base64编码,但这不是我想要使用的方法

这是我的密码。它从数据库中获取所有产品,并在表行中显示它们的id、描述和图像

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<title>Image Test</title>
<body>
<?php
    include("mylibrary/login.php");
    login();
    $query = "SELECT prodid, description FROM products";
    $result = mysql_query($query) or die(mysql_error());

    echo "<table width=\"50%\" cellpadding=\"1\" border=\"1\">\n";
    echo "<tr><td>Product ID</td><td>Description</td><td>Image</td></tr>\n";
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
    {
        $prodid = $row['prodid'];
        $description = $row['description'];

        echo "<tr><td>$prodid</td><td>$description</td>\n";  
        echo "<td><img src=\"showimage.php?id=$prodid\" width=\"80\" height=\"60\"></td></tr>\n";
    }
    echo "</table>\n";
?>
</body>
</html>
如果能帮助我理解为什么这段代码不起作用,我将不胜感激。我在这个网站上和谷歌搜索中读过很多文章,他们都说这段代码应该有效


顺便说一句,我不想使用base64编码方法,因为我正在接受一个类,这就是我们正在使用的方法,我也是唯一一个有这个问题的人

一般来说,代码看起来几乎没问题。图片的问题是,它必须完全正确,否则无法正确显示。尝试以下方法:

使用内容类型:image/jpeg而不是内容类型:image/jpeg 删除showimage.php中的结束标记?>如果结束标记后有空格,这可能是您的问题。永远不要对仅PHP文件使用结束标记。
如果没有帮助,请删除内容类型的标题,并通过调用图片url查看实际返回给您的内容,并将数据与原始图像进行比较。通过这种方式,您可以确认图片数据是否正确,或者差异是什么。

我尝试了脚本,该脚本作为不同图像类型的答案。它工作正常,请看一看,@mkaatman感谢您的回答,但这并不能回答我的问题。我不想用base64。我很想知道为什么我的当前设置不起作用,因为我看到其他人在不使用base64的情况下使用它没有问题。如果您解释一下为什么不使用base64,可能会有所帮助?你想解决什么问题?
<?php
//header('Content-Type: image/jpeg');
   $prodid = $_GET['id'];
   $con = mysql_connect("localhost", "test", "test") or die('');
   mysql_select_db("store", $con);

   $query = "SELECT picture from products WHERE prodid=$prodid";
   $result = mysql_query($query);
   $row = mysql_fetch_array($result, MYSQL_ASSOC);
   $picture = $row['picture'];

   header("Content-type: image/jpeg");
   echo $picture;
?>