0

我希望在我的 wordpress 插件中创建一个页面,其中将 MySQL 数据从表中导出为 CSV 并单击下载。我有以下代码

<?php
function fz_csv_export() {
$date = new DateTime();
$ts = $date->format( 'Y-m-d H:i:s' );
$result = array();
$result[] = array(
"first_name" => "Faison", "last_name" => "Zutavern",
"product_viewed" => "Sunglasses", "time_viewed" => $ts
);
$result[] = array(
"first_name" => "Faison", "last_name" => "Zutavern",
"product_viewed" => "Razor", "time_viewed" => $ts
);
$filename = "report-$ts.csv";
header( 'Content-Type: text/csv' );
header( 'Content-Disposition: attachment;filename='.$filename);
$fp = fopen('php://output', 'w');
$hrow = $result[0];
fputcsv($fp, array_keys($hrow));
foreach ($result as $data) {
fputcsv($fp, $data);
}
fclose($fp);
}
// Execute the function
fz_csv_export();
?>

但它会打印数据而不是下载 csv。感谢任何帮助

4

2 回答 2

1

根据以下 PHP 文档:http: //php.net/manual/en/function.header.php

请记住,必须在发送任何实际输出之前调用 header(),无论是通过普通 HTML 标记、文件中的空白行还是从 PHP 发送。使用 include 或 require 函数或其他文件访问函数读取代码并在调用 header() 之前输出空格或空行是一个非常常见的错误。使用单个 PHP/HTML 文件时也存在同样的问题。

只需在脚本开头传递您的标头,这将确保标头正确传递并且可以下载文件。

于 2013-10-08T06:23:17.667 回答
0

在 csv 文件生成代码的地方使用它

$filename = "report-$ts.csv";

    header( 'Content-Description: File Transfer' );
    header( 'Content-Disposition: attachment; filename=' . $filename );
    header( 'Content-Type: text/csv; charset=' . get_option( 'blog_charset' ), true );

    $fields="id".","."Name"."\n";

从 foreach 循环中获取内容

foreach { $data .= $id.",".$name."\n"; }

   echo $fields.$data;
   exit;

于 2013-10-08T06:14:46.907 回答