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

PHP/MySQL中传递行ID查询单行及FPDF动态打印问题求助

解决根据cardId查询单行并使用FPDF打印的问题

你已经搞定了批量打印全表的功能,现在要实现单行打印的话,咱们可以分成前端传递cardId、PHP查询单行数据、FPDF生成单行PDF这几个步骤来做,下面一步步给你拆解:

1. 前端添加单行打印触发按钮

首先在你现有的表格行里,给每一行加一个打印按钮,把当前行的cardId传递给PHP处理页面。修改你的前端代码,在<tr>末尾加一个<td>放置按钮:

<tr>
  <td>'.$data["cardId"].'</td>
  <td id="surname_'.$data["cardId"].'">'.$data["surname"].', '.$data["givenName"].'</td>
  <td id="resAddress_'.$data["cardId"].'">'.$data["resAddress"].'</td>
  <td id="resSuburb_'.$data["cardId"].'">...</td>
  <!-- 添加打印按钮 -->
  <td>
    <a href="print_single.php?cardId='.$data["cardId"].'" target="_blank">打印该行</a>
  </td>
</tr>

这里用超链接直接跳转到打印处理页面,通过GET参数cardId传递当前行的ID,简单直接,适配FPDF需要直接输出PDF的场景。

2. PHP接收cardId并查询单行数据

接下来创建print_single.php文件,接收前端传过来的cardId,然后用预处理语句查询MySQL(一定要用预处理,避免SQL注入风险!):

<?php
// 连接数据库(替换成你的数据库信息)
$conn = new mysqli('localhost', 'username', 'password', 'database_name');
if ($conn->connect_error) {
  die("连接失败: " . $conn->connect_error);
}

// 验证并获取cardId参数
if (!isset($_GET['cardId']) || !is_numeric($_GET['cardId'])) {
  die("无效的cardId参数");
}
$cardId = $_GET['cardId'];

// 使用预处理语句查询单行数据
$stmt = $conn->prepare("SELECT cardId, surname, givenName, resAddress, resSuburb FROM your_table_name WHERE cardId = ?");
$stmt->bind_param("i", $cardId); // "i"表示整数类型,若cardId是字符串则改为"s"
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();

// 检查是否找到对应数据
if (!$row) {
  die("未找到对应ID的数据");
}

// 关闭连接
$stmt->close();
$conn->close();
?>

这里核心是用prepare和bind_param来避免SQL注入,绝对不要直接把$_GET['cardId']拼进SQL语句里!

3. 使用FPDF生成单行PDF

在print_single.php里,接着上面的数据库查询代码,引入FPDF库并生成包含该行数据的PDF:

<?php
// 上面的数据库查询代码...

// 引入FPDF库(确保路径正确)
require('fpdf/fpdf.php');

// 创建PDF对象
$pdf = new FPDF();
$pdf->AddPage();

// 设置标题字体
$pdf->SetFont('Arial', 'B', 16);
$pdf->Cell(40, 10, '个人信息详情');
$pdf->Ln(15); // 换行

// 设置普通内容字体
$pdf->SetFont('Arial', '', 12);

// 逐行输出单行数据
$pdf->Cell(40, 10, 'Card ID:');
$pdf->Cell(80, 10, $row['cardId']);
$pdf->Ln();

$pdf->Cell(40, 10, '姓名:');
$pdf->Cell(80, 10, $row['surname'] . ', ' . $row['givenName']);
$pdf->Ln();

$pdf->Cell(40, 10, '地址:');
$pdf->Cell(80, 10, $row['resAddress']);
$pdf->Ln();

$pdf->Cell(40, 10, '郊区:');
$pdf->Cell(80, 10, $row['resSuburb']);
$pdf->Ln();

// 输出PDF到浏览器
$pdf->Output();
?>

这样用户点击某一行的打印按钮时,会打开新窗口加载print_single.php,查询对应ID的单行数据后生成并输出PDF。

额外注意事项

  • 确保FPDF库的路径正确,若你把FPDF放在项目根目录的fpdf文件夹里,require('fpdf/fpdf.php')就没问题;
  • 数据库连接信息要替换成你自己的配置;
  • 如果cardId是字符串类型(比如UUID),记得把bind_param的参数从"i"改成"s";
  • 可以根据需求调整PDF的布局,比如添加边框、调整单元格宽度、修改字体样式等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:33:33