PHP导出用户数据到Excel的完整方法
本文详细讲解如何安全地从MySQL数据库中查询并导出当前登录用户的专属数据(基于Session)到Excel,涵盖SQL条件过滤、防注入优化、CSV导出实现及常见错误排查。

本文详细讲解如何安全地从 MySQL 数据库中查询并导出当前登录用户的专属数据(基于 Session)到 Excel,涵盖 SQL 条件过滤、防注入优化、CSV 导出实现及常见错误排查。
在 PHP Web 应用中,将数据库中当前登录用户专属数据导出为 Excel 是常见需求。但很多开发者遇到类似问题:WHERE UserName = $_SESSION['useruid'] 查询无结果,而全表查询却正常——这通常源于会话键名与数据库字段不匹配或SQL 注入风险未处理。
✅ 正确做法:核对 Session 键名与字段语义
你原始代码的问题在于:
WHERE UserName = '".$_SESSION['useruid']."' // ❌ useruid 通常是用户ID(如 123),而 UserName 字段存的是用户名(如 "john_doe")
若数据库 tickets_list 表中 UserName 列存储的是用户名(如 "alice"),而 $_SESSION['useruid'] 存的是数字型用户 ID(如 5),则条件永远不成立。
✅ 正确写法应确保语义一致:
// 方案1:假设 SESSION 中存的是用户名(推荐命名清晰)
$username = $_SESSION['username'] ?? '';
if (empty($username)) {
die('未登录或会话失效');
}
$query = "SELECT id, title, status, created_at FROM tickets_list WHERE UserName = ?";
$stmt = mysqli_prepare($conn, $query);
mysqli_stmt_bind_param($stmt, 's', $username);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);? 强烈建议使用预处理语句(Prepared Statement),避免 SQL 注入攻击。直接拼接 $_SESSION 变量存在严重安全隐患。
? 导出为 Excel 兼容格式(CSV)
PHP 原生不直接生成 .xlsx,但 CSV 文件可被 Excel 完美打开,且实现轻量、兼容性高:
// 设置响应头,触发下载
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename="my_tickets_' . date('Y-m-d') . '.csv"');
$output = fopen('php://output', 'w');
// 写入 UTF-8 BOM(解决 Excel 中文乱码)
fprintf($output, "\xEF\xBB\xBF");
// 写入表头
fputcsv($output, ['ID', '标题', '状态', '创建时间']);
// 写入数据行
while ($row = mysqli_fetch_assoc($result)) {
fputcsv($output, [
$row['id'],
$row['title'],
$row['status'],
$row['created_at']
]);
}
fclose($output);
exit;⚠️ 关键注意事项
- Session 必须已启动:导出脚本顶部需有 session_start();
- 字段名严格校验:通过 DESC tickets_list 确认 UserName 实际存储内容(用户名?邮箱?UUID?),再匹配对应 Session 键(如 $_SESSION['email'] 或 $_SESSION['login_name'])
- 空值防御:始终检查 $_SESSION 变量是否存在且非空,避免 Notice 错误和逻辑漏洞
- 权限隔离:确保该导出接口仅对登录用户开放,且不能被篡改 WHERE 条件(如通过 URL 参数绕过)
✅ 总结
导出用户专属数据的核心是:语义一致 + 参数安全 + 响应规范。不要依赖字符串拼接,优先使用预处理;不要假设 Session 键名含义,务必与数据库设计对齐;导出时用 CSV + BOM 是最稳妥的 Excel 兼容方案。完成以上步骤后,用户点击导出按钮,即可下载仅含自己工单的 Excel 文件。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















