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

使用FPDF实现头像显示时else语句出现Undefined variable: pdf错误求助

解决FPDF中Undefined variable: pdf的问题

我看了你这段用FPDF实现用户头像显示的代码,出现这个错误的原因很明确——你只在if ($row['status'] == 1)的代码块里初始化了$pdf对象,当用户状态不等于1时,进入else分支时$pdf根本还没被创建,自然会报未定义的错误。

错误原因拆解

你当前的逻辑存在变量作用域问题:

  • 仅当用户状态为1时,才执行$pdf = new PDF_Code128('P','mm','A4');创建PDF对象
  • 当状态不符合条件时,直接跳到else分支调用$pdf->image(),但此时$pdf还未被定义

修正后的代码

把PDF对象的初始化代码移到if判断的外面,这样不管进入哪个分支,$pdf都已经被正确创建:

$query = mysqli_query($con,"select * from s_users where s_id = '" . $_GET['s_id'] . "'"); 
$row = mysqli_fetch_array($query); 

// 先初始化PDF对象,放在判断逻辑外,确保两个分支都能访问到
$pdf = new PDF_Code128('P','mm','A4'); 
$pdf->AddPage(); 
$pdf->Cell(190 ,220,'',1,0); 
$pdf->image('images/logo.png', 14, 16, -200); 

if ($row['status'] == 1) { 
    // 显示用户自定义头像
    $pdf->image($row['imgdata'], 163, 16, -210); 
} else { 
    // 显示默认头像
    $pdf->image('images/profiledefault.jpg', 163, 16, -210); 
} 

$pdf->SetFont('Arial','B',14); 
// 记得最后调用Output生成并输出PDF,否则看不到结果
// $pdf->Output();

额外优化建议

  1. 原代码中SetFont只在if块内执行,else分支不会设置字体,建议移到判断逻辑外,确保全局生效
  2. 最后一定要调用$pdf->Output()来输出PDF文件,否则无法生成最终的PDF内容
  3. 直接将$_GET['s_id']拼进SQL语句存在SQL注入风险,建议改用预处理语句优化安全性:
// 预处理语句示例(假设s_id为整数类型)
$stmt = mysqli_prepare($con, "select * from s_users where s_id = ?");
mysqli_stmt_bind_param($stmt, "i", $_GET['s_id']); 
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$row = mysqli_fetch_array($result);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:58:02