我有PHP脚本将数据库中的记录导出到CSV文件。当我单击导出按钮时,它会在服务器上创建一个CSV文件(当前位置)。所有数据都正确显示在CSV文件中,但不应保存在服务器上,应在系统中下载。这个问题可能重复,但我没有找到答案。
CSV文件中导出数据的代码。
$monthData = mysql_query($query, $conn);
$columns_total = mysql_num_fields($monthData);
$output = "";
for ($i = 2; $i < $columns_total; $i++) {
$heading = mysql_field_name($monthData,$i);
$output .= '"'.$heading.'",';
}
$output .="\n";
while ($row = mysql_fetch_array($monthData)) {
for ($i = 2; $i < $columns_total; $i++) {
$output .='"'.$row["$i"].'",';
}
$output .="\n";
}
$fileName = $month.'Data.csv';
$csvfile = fopen($fileName, "w") or die("Unable to open file!");
fwrite($csvfile, $output);
fclose($csvfile);
根据我的研究或知识,我认为需要添加一些标题(指定fileName,fileSize和许多其他标题)。我不太了解它,为什么以及在哪里需要添加它。
任何人都可以帮助我吗?
答案 0 :(得分:1)
在这里,您可以回答您的问题。
<?php
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=testdata.csv');
// create a file pointer connected to the output stream
$output = fopen('php://output', 'w');
// fetch the data
$row = array(array('row1val','row1val','row1val'),array('row2val','row2val','row2val'));
// loop over the rows, outputting them
foreach($row as $fields):
fputcsv($output, $fields);
endforeach;
fclose($output);
?>
由于