在 PHP 中为用户创建 CSV 文件
2022-08-30 06:17:00
我在MySQL数据库中有数据。我正在向用户发送一个 URL,以将其数据作为 CSV 文件提供。
我涵盖了链接的电子邮件,MySQL查询等。
当他们单击链接时,我该如何弹出窗口从MySQL下载带有记录的CVS?
我已经拥有获取记录的所有信息。我只是不知道如何让PHP创建CSV文件并让他们下载扩展名为.csv的文件。
我在MySQL数据库中有数据。我正在向用户发送一个 URL,以将其数据作为 CSV 文件提供。
我涵盖了链接的电子邮件,MySQL查询等。
当他们单击链接时,我该如何弹出窗口从MySQL下载带有记录的CVS?
我已经拥有获取记录的所有信息。我只是不知道如何让PHP创建CSV文件并让他们下载扩展名为.csv的文件。
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
尝试:
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;
}