我在MySQL数据库中有数据。我向用户发送一个URL,以获取他们的数据作为CSV文件。
我有链接的电子邮件,MySQL查询等覆盖。
当他们点击链接时,如何弹出从MySQL下载带有记录的CVS的窗口?
我已经有了所有能拿到唱片的资料。我只是不明白如何让PHP创建CSV文件,并让他们下载一个扩展名为. CSV的文件。
我在MySQL数据库中有数据。我向用户发送一个URL,以获取他们的数据作为CSV文件。
我有链接的电子邮件,MySQL查询等覆盖。
当他们点击链接时,如何弹出从MySQL下载带有记录的CVS的窗口?
我已经有了所有能拿到唱片的资料。我只是不明白如何让PHP创建CSV文件,并让他们下载一个扩展名为. CSV的文件。
当前回答
在$output变量中放入CSV数据,并返回正确的报头
header("Content-type: application/download\r\n");
header("Content-disposition: filename=filename.csv\r\n\r\n");
header("Content-Transfer-Encoding: ASCII\r\n");
header("Content-length: ".strlen($output)."\r\n");
echo $output;
其他回答
Try:
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;
etc
编辑:这是我用来可选地编码CSV字段的代码片段:
function maybeEncodeCSVField($string) {
if(strpos($string, ',') !== false || strpos($string, '"') !== false || strpos($string, "\n") !== false) {
$string = '"' . str_replace('"', '""', $string) . '"';
}
return $string;
}
要让它以CSV格式发送,并给出文件名,请使用header():
http://us2.php.net/header
header('Content-type: text/csv');
header('Content-disposition: attachment; filename="myfile.csv"');
至于创建CSV本身,您只需要遍历结果集,格式化输出并发送它,就像处理任何其他内容一样。
除了上述内容,你可能还需要补充:
header("Content-Transfer-Encoding: UTF-8");
它在处理包含多种语言的文件时非常有用,比如人名或城市。
如何写在CSV文件使用PHP脚本?其实我也在找这个。这在PHP中很简单。 Fputs(处理程序,内容)-这个函数为我有效地工作。首先,您需要使用fopen($CSVFileName, ' wb ')打开需要写入内容的文件。
$CSVFileName = “test.csv”;
$fp = fopen($CSVFileName, ‘wb’);
//Multiple iterations to append the data using function fputs()
foreach ($csv_post as $temp)
{
$line = “”;
$line .= “Content 1″ . $comma . “$temp” . $comma . “Content 2″ . $comma . “16/10/2012″.$comma;
$line .= “\n”;
fputs($fp, $line);
}
编写自己的CSV代码可能是浪费你的时间,只是使用一个包,如league/ CSV -它为你处理所有困难的事情,文档是很好的,它是非常稳定/可靠的:
http://csv.thephpleague.com/
你需要使用作曲家。如果你不知道什么是作曲家,我强烈建议你去看看:https://getcomposer.org/