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

Firefox下FPDF无法输出MySQL第二查询结果变量的问题求助

问题排查与解决思路

1. 先查MySQL结果集有没有释放

Firefox对PDF字节流的敏感度比Chrome高,要是第一条查询的结果集没释放,可能会卡着后续数据读取。

  • 用mysqli的话,第一条查完记得调用mysqli_free_result()释放结果集;用PDO的话,确保结果集已经遍历完。比如:
// 第一条查询处理
$result1 = mysqli_query($conn, $sql1);
$row1 = mysqli_fetch_assoc($result1);
mysqli_free_result($result1); // *关键:释放结果集*

// 第二条查询
$result2 = mysqli_query($conn, $sql2);
$row2 = mysqli_fetch_assoc($result2);
$proj_name = $row2['proj_name'];
$post_name = $row2['post_name'];
$chalan_form = $row2['chalan_form'];

2. 确认第二条查询有没有拿到数据

别光看PDF显示,直接把第二条查询的结果打出来看看:

// 第二条查询后加调试代码
var_dump($row2);
die;

要是输出是空的,那就是SQL本身的问题——查下WHERE条件对不对、表名有没有写错,或者数据库权限够不够。

3. 调整FPDF的输出缓存和头信息

Firefox对PDF的缓存和编码卡得严,试试这些操作:

  • 输出PDF前清空所有缓冲区:
ob_clean(); // *必须放在Output()之前,清空所有残留输出*
$pdf->Output();
  • 把HTTP头设置好,别让缓存搞事:
header('Content-Type: application/pdf');
header('Content-Disposition: inline; filename="your_doc.pdf"');
header('Cache-Control: no-cache, no-store, must-revalidate');
header('Pragma: no-cache');
header('Expires: 0');

注意:这些HTTP头必须放在任何输出(包括空格、换行)之前,否则会失效

4. 检查变量赋值有没有问题

说不定是变量没赋上值,或者被后面的代码覆盖了。可以加个兜底赋值:

$proj_name = $row2['proj_name'] ?? '无数据';
$post_name = $row2['post_name'] ?? '无数据';
$chalan_form = $row2['chalan_form'] ?? '无数据';

这样就算字段为空,也会显示“无数据”,能排查是不是字段值为空导致的不显示。

5. 换个FPDF输出方法试试

有时候是Cell()或者Write()的调用细节有问题,换个写法输出变量看看:

// 比如把原来的输出改成这样
$pdf->Cell(0, 10, "项目名称:{$proj_name}", 0, 1);
$pdf->Write(10, "岗位名称:{$post_name}\n");
$pdf->Cell(0, 10, "表单编号:{$chalan_form}", 0, 1);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:40:47