Php 无法从数据库下载pdf文件,它将显示普通记事本

Php 无法从数据库下载pdf文件,它将显示普通记事本,php,pdf,Php,Pdf,我试图做一个ahref,能够从数据库下载pdf文件,但在我点击它后,下载一个普通的记事本而不是pdf,里面没有数据 这是a href <a href="download.php?id=<?php=$id;?>">Download [pfd]</a> <br> 这是download.php <?php // Connect to the database $host="localhost"; // Host name

我试图做一个ahref,能够从数据库下载pdf文件,但在我点击它后,下载一个普通的记事本而不是pdf,里面没有数据

这是a href

<a href="download.php?id=<?php=$id;?>">Download [pfd]</a> <br>

这是download.php

<?php

// Connect to the database
        $host="localhost"; // Host name 
        $username="root"; // Mysql username 
        $password=""; // Mysql password 
        $db_name="is"; // Database name 
        $tbl_name="publication"; // Table name 

        $conn = mysql_connect("$host", "$username", "$password"); 
        if(! $conn )
        {
          die('Could not connect: ' . mysql_error());
        }

        mysql_select_db($db_name);

    if (isset($_GET["id"]) && !empty($_GET["id"])) { 

            $id= $_GET['id'];

            $query = "SELECT file_name, file_type, file_size, content " .
                     "FROM $tbl_name WHERE file_id = '$id'";

            $result = mysql_query($query) or die(mysql_error()); 
            list($name, $type, $size, $content) = mysql_fetch_array($result);

            header("Content-length: $size");
            header("Content-type: $type");
            header("Content-Disposition: attachment; filename=$name");
            echo $content;

            mysql_close($conn);
            exit;
            }


?>

我猜您的结果集是空的:您的查询与任何行都不匹配。这解释了空文件内容和空文件名

由于此页面即使出现错误也会强制下载文件,因此您可能会丢失错误消息。您可以尝试暂时删除下载头以查看错误。也可以在单击链接的同时按CTRL键在新窗口中打开下载链接。通过这种方式,您可以验证下载URL是否确实包含ID


顺便说一句:您的代码中存在SQL注入漏洞

Mysql中“内容”字段的类型是什么?@mesutozer。。这是longblob…下载的文件有正确的文件名吗?嗯。。。什么是正确的文件名?我的意思是下载的文件名与数据库中的“文件名”字段相同。或者它有一个像“下载(1)”这样的通用名称?下载链接是。。。这是否意味着我已将ID传递给download.php?您传递的ID不正确。似乎您正在打开idIt周围的标签,似乎您正在打印类似echo“”的链接;你需要用echo“”替换它是的。。。它的工作。。。非常感谢。。。如果没有你的帮助,我可能会修复它。。。thx..你能查一下我的第二条评论吗?似乎你是在一个单引号内的回音语句中