在 PHP 中为用户创建 CSV 文件

2022-08-30 06:17:00

我在MySQL数据库中有数据。我正在向用户发送一个 URL,以将其数据作为 CSV 文件提供。

我涵盖了链接的电子邮件,MySQL查询等。

当他们单击链接时,我该如何弹出窗口从MySQL下载带有记录的CVS?

我已经拥有获取记录的所有信息。我只是不知道如何让PHP创建CSV文件并让他们下载扩展名为.csv的文件。


答案 1
header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");

function outputCSV($data) {
  $output = fopen("php://output", "wb");
  foreach ($data as $row)
    fputcsv($output, $row); // here you can change delimiter/enclosure
  fclose($output);
}

outputCSV(array(
  array("name 1", "age 1", "city 1"),
  array("name 2", "age 2", "city 2"),
  array("name 3", "age 3", "city 3")
));


php://output fputcsv


答案 2

尝试:

header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");

echo "record1,record2,record3\n";
die;

编辑:这是我用来选择性编码CSV字段的代码片段:

function maybeEncodeCSVField($string) {
    if(strpos($string, ',') !== false || strpos($string, '"') !== false || strpos($string, "\n") !== false) {
        $string = '"' . str_replace('"', '""', $string) . '"';
    }
    return $string;
}

推荐