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

如何用FPDF渲染MySQL查询数组?仅打印首元素问题排查

问题分析与修复方案

核心错误1:PDF输出后跳转Header导致输出中断

代码在$pdf->Output();之后调用了header("Location:..."),这是严重错误:

  • Output()会直接向浏览器发送PDF二进制内容,此时HTTP响应头已发送完成,后续调用header()会触发PHP"headers already sent"错误,同时截断PDF输出,导致浏览器仅能接收到部分内容(通常是第一条数据)。
  • 生成PDF与页面跳转是互斥操作,必须删除该行跳转代码。

核心错误2:内容超出页面范围未处理

每个Cell高度设为50mm,加上Ln()的行高,从Y=115的位置开始,很快会超出A4纸张高度(297mm),后续内容会被挤出页面,看起来像是没有遍历数据。

潜在错误:POST参数名拼写错误

$_POST['seraching_group']存在拼写错误(应为searching_group),如果前端传递的参数名是正确的searching_group,会导致查询条件绑定空值,返回结果集不符合预期。


修复后的完整代码

<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
include("conection.php");
require('fpdf/fpdf.php');

// 修复参数名拼写错误,增加空值判断
$searchGroup = $_POST['searching_group'] ?? '';
if(empty($searchGroup)) {
    die("分组参数不能为空");
}

$stmt = $con->prepare("SELECT student_qr FROM students WHERE student_group = ? AND student_credits > 0");
$stmt->bind_param("s", $searchGroup);
$stmt->execute();
$result = $stmt->get_result(); 

$pdf = new FPDF('P','mm','A4');
$pdf->AddPage();

// 设置标题样式与位置
$pdf->SetFont('Arial', 'B', 11);
$pdf->SetTextColor(255,255,255);
$pdf->SetFillColor(0,134,255);
$pdf->SetXY(10, 15);
$pdf->Cell(191.5,5,utf8_decode("Alumns"),0,1,'L',true);

// 重置内容单元格样式
$pdf->SetFont('Arial', '', 10);
$pdf->SetTextColor(0,0,0);
$pdf->SetFillColor(240,240,240);
$pdf->SetXY(10, 25);

while($row = $result->fetch_assoc()) 
{
    // 自动分页判断(预留20mm页边距)
    if($pdf->GetY() > 277) {
        $pdf->AddPage();
        // 新页面重新设置标题
        $pdf->SetFont('Arial', 'B', 11);
        $pdf->SetTextColor(255,255,255);
        $pdf->SetFillColor(0,134,255);
        $pdf->SetXY(10, 15);
        $pdf->Cell(191.5,5,utf8_decode("Alumns"),0,1,'L',true);
        // 重置内容样式
        $pdf->SetFont('Arial', '', 10);
        $pdf->SetTextColor(0,0,0);
        $pdf->SetFillColor(240,240,240);
        $pdf->SetXY(10, 25);
    }
    // 调整单元格高度为10mm,Cell第5个参数为1已自动换行,无需额外Ln()
    $pdf->Cell(110,10,$row["student_qr"], 1,1,'C', true);
}

$pdf->Output();
mysqli_close($con); 

额外说明

  • 调整标题位置到页面顶部,避免空间浪费;
  • 增加分页逻辑,内容接近页面底部时自动新增页面;
  • 重置内容单元格样式,避免继承标题的蓝色填充与白色文字;
  • 调整单元格高度为10mm,符合常规文本显示需求;
  • 增加参数空值判断,避免无效查询。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:25:34