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

使用PHP fputcsv导出MySQL数据为CSV仅出现列头无数据求助

问题排查步骤及解决方案

1. 修正fetch_assoc调用语法错误

核心问题为结果集读取方法调用错误,PHP原生没有全局fetch_assoc函数,如果你使用的是mysqli扩展,正确写法是调用结果集对象的fetch_assoc()方法:
原错误代码:

while ($row = fetch_assoc($rows)) {fputcsv($output, $row);}

修正后:

while ($row = $rows->fetch_assoc()) {fputcsv($output, $row);}

如果使用PDO扩展,对应的写法是:

while ($row = $rows->fetch(PDO::FETCH_ASSOC)) {fputcsv($output, $row);}

2. 验证SQL查询有效性

  • 将你的SQL语句直接在MySQL客户端(如phpMyAdmin、Navicat)中执行,确认WHERE Current = '1'条件能匹配到有效数据
  • 如果Current字段是数值类型,去掉值的单引号,避免隐式类型转换导致匹配失败:
SELECT Club_Name,BHS,Title,Type,Forename,Surname,Address1,Address2,Address3,Address4,Postcode,Phone,Email,Mobile FROM tvrc_members WHERE Current = 1

3. 增加错误判断排查运行异常

在查询执行前后增加错误判断,定位是否存在数据库连接、权限或者语法错误:

// 验证数据库连接
if ($conn->connect_error) {
    die("数据库连接失败: " . $conn->connect_error);
}
$sql = "SELECT Club_Name,BHS,Title,Type,Forename,Surname,Address1,Address2,Address3,Address4,Postcode,Phone,Email,Mobile FROM tvrc_members WHERE Current = '1'";
$rows = $conn->query($sql);
// 验证查询执行结果
if (!$rows) {
    die("查询执行失败: " . $conn->error);
}

4. 终止脚本避免额外输出污染

CSV输出完成后立即终止脚本执行,避免foot.php输出的额外内容(空格、报错信息、HTML代码等)破坏CSV结构,甚至覆盖业务数据:

while ($row = $rows->fetch_assoc()) {
    fputcsv($output, $row);
}
fclose($output);
// 新增终止执行语句
exit;
require('foot.php');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:45:00