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

如何在PHP导出的CSV文件中包含表头列名?

给导出CSV的PHP代码添加表头列名

你的代码目前靠手动拼接每行数据导出,但确实缺少表头,而且手动拼接的方式很容易出问题——比如字段内容里带引号、逗号时,会直接破坏CSV的格式。推荐用PHP内置的fputcsv()函数来处理,既能省心保证格式正确,还能顺便加上表头。

修改后的完整代码如下:

<?php

$host = 'host';
$mydatabase = 'db';
$user = 'user';
$pass = 'pass';
try {
    $db = new PDO('mysql:host='.$host.';dbname='.$mydatabase, $user, $pass);
} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
    die();
}

$sql = 'SELECT * FROM table ORDER BY id ';

$stmt = $db->prepare($sql);
$stmt->execute();

// 打开CSV文件准备写入
$file = 'table.csv';
$f = fopen($file, 'w');
if (!$f) {
    die("无法打开文件进行写入");
}

// 自动获取表头列名
$columnNames = [];
$columnCount = $stmt->columnCount();
for ($i = 0; $i < $columnCount; $i++) {
    $meta = $stmt->getColumnMeta($i);
    $columnNames[] = $meta['name'];
}
// 写入表头行
fputcsv($f, $columnNames);

// 循环写入数据行
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    fputcsv($f, $row);
}

fclose($f);
?>

关键修改说明:

  • 替换手动拼接字符串为fputcsv(),它会自动处理字段里的引号、逗号等特殊字符,避免CSV格式出错
  • 通过$stmt->columnCount()和getColumnMeta()自动获取查询结果的列名,作为表头写入文件开头,适配表结构变化
  • 直接把fetch_assoc得到的数组传给fputcsv(),不用手动逐个写字段,后续表字段增减也不用修改代码

如果你需要固定表头(不想自动获取),也可以直接手动定义,比如$columnNames = ['id', 'name', 'surname', 'etc'];,效果一样。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 21:42:32