You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FPDF导出数据库数据为PDF遇报错,请求技术协助

我来帮你一步步拆解这两个问题,逐个解决:

第一个错误:mysql_fetch_array() 参数类型不匹配

这个警告的核心原因是:你现在用的数据库连接方式(大概率是mysqli或者PDO),执行查询后返回的是对象类型,但mysql_fetch_array()是早已被废弃的老版mysql扩展函数,它只认mysql_query()返回的资源类型,自然就报错了。

解决步骤:

  • 如果你用的是mysqli扩展(最常见的情况),把mysql_fetch_array()替换成mysqli_fetch_array(),记得把数据库连接对象作为第一个参数传入。比如原来的代码:
    $result = mysqli_query($conn, $sql);
    while($row = mysql_fetch_array($result)) {
        // 你的逻辑
    }
    
    要改成:
    $result = mysqli_query($conn, $sql);
    // 第二个参数可选,指定返回关联数组、索引数组或两者兼具
    while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
        // 你的逻辑
    }
    
  • 如果你用的是PDO扩展,那就改用PDO的fetch()或fetchAll()方法:
    $stmt = $pdo->query($sql);
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        // 你的逻辑
    }
    
    额外提醒:mysql_*系列函数在PHP 7已经被完全移除,建议彻底切换到mysqli或PDO,避免后续更多兼容性问题。
第二个错误:FPDF无法发送PDF文件(已有内容输出)

FPDF生成PDF时,要求输出PDF之前不能有任何其他内容发送到浏览器——包括空格、换行、echo输出,甚至PHP的警告/错误信息(比如第一个警告就属于提前输出的内容),这些都会破坏PDF的头信息,导致报错。

解决步骤:

  1. 优先修复第一个警告:第一个错误的警告文本已经是提前输出的内容,先把它解决掉,这个问题可能就自动消失大半了。
  2. 检查文件的空白字符:确保Department.php的<?php标签前没有任何空格、换行,甚至是隐藏的BOM字节顺序标记;文件结尾的?>标签如果不需要的话可以直接删掉,避免意外输出空白。
  3. 开启输出缓冲:如果还是存在隐藏的输出,可以在文件最顶部添加输出缓冲代码,把所有输出暂时缓存起来,直到FPDF完成输出:
    ob_start(); // 开启缓冲
    
    然后在FPDF输出PDF的代码后面加上:
    ob_end_flush(); // 输出缓冲内容
    
  4. 临时关闭错误输出(调试用):如果还需要排查其他隐藏输出,可以临时关闭PHP的错误显示:
    error_reporting(0);
    ini_set('display_errors', 0);
    
    不过更推荐的是从根源修复错误,而不是隐藏错误,这样能避免潜在的其他问题。

内容的提问来源于stack exchange,提问作者Ares_SVX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:34:25