【发布时间】:2012-07-22 17:25:13
【问题描述】:
我正在为我的小项目寻找从 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";
}
?>
我不知道如何从$query 输出中生成 CSV 并触发下载。
感谢您的帮助!
【问题讨论】:
-
请不要将
mysql_*函数用于新代码。它们不再维护,社区已经开始deprecation process。看到red box?相反,您应该了解prepared statements 并使用PDO 或MySQLi。如果您不能决定,this article 将帮助您选择。如果你想学习,here is good PDO tutorial。 -
谢谢@ManseUK。将尝试阅读 PDO 和 MySQLi。关于可能的重复,是的,可能是这样,但我不太明白它的意思。基本上我想从
$results数组中创建一个CSV,我不知道该怎么做。 -
我已尝试实施第一条评论中的链接,编辑了我的帖子,但下载的 CSV 文件包含“SCREAM”错误。我做错了什么?
-
在
header函数调用之前,您是否在回响任何内容? -
@ManseUK,明白了,非常感谢!