2012-07-24 50 views
0

可能重复:
Create a CSV File for a user in PHP创建一个CSV下载链接用PHP

我要寻找一个解决方案来创建从一个MySQL查询CSV下载链接为我的小项目。

基本上下载链接将在此格式:

http://localhost/vnodes/generateExcel.php?fromDate=2012-07-23&toDate=2012-07-24&location=1 

在我generateExcel.php将包含此:

<?php 

$fromDate = $_GET['fromDate']; 
$toDate = $_GET['toDate']; 
$location = $_GET['location']; 

include "connect.php"; 
$connect = mysql_connect($dbhost, $dbusername, $dbpassword) or die(mysql_error()); 
mysql_select_db($dbname) or die(mysql_error()); 
$query = mysql_query("SELECT * FROM `nodes` WHERE `dateIn` BETWEEN '$fromDate' AND '$toDate' AND partLocation = '$location' ORDER BY `dateIn` ASC") or die(mysql_error()); 

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

while($result = mysql_fetch_array($query)) { 
    echo $result['dateIn'].",".$result['partNumber'].",".$result['serialNumber'].",".$result['4serialNumber'].",".$result['status'].",".$result['operator']."\n"; 
} 
?> 

我不知道事情是如何使一个CSV输出$query输出并触发下载。

谢谢你的帮助!

+1

请不要在新代码中使用'mysql_ *'函数。他们不再被维护,社区已经开始[弃用流程](http://goo.gl/KJveJ)。请参阅[**红框**](http://goo.gl/GPmFd)?相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定,[本文](http://goo.gl/3gqF9)将有助于选择。如果你关心学习,[这里是很好的PDO教程](http://goo.gl/vFWnC)。 – ManseUK 2012-07-24 11:42:54

+0

谢谢@ManseUK。将尝试读取PDO和MySQLi。关于可能的重复,是的,可能是这种情况,但我不太明白它的意思。基本上我想从'$ results'数组中创建一个CSV,我不知道该怎么做。 – JudeJitsu 2012-07-24 11:44:07

+0

我尝试过从第一条评论实施链接,编辑我的帖子,但下载的CSV文件包含“SCREAM”错误。我究竟做错了什么? – JudeJitsu 2012-07-24 11:54:49

回答

2

更改内容类型为text/CSV

header("Content-type: text/csv"); 

并移动头()调用脚本的顶部。

并按照注释中的建议使用PDO或mysqli。