【问题标题】:Create a CSV Download Link with PHP [duplicate]使用 PHP 创建 CSV 下载链接 [重复]
【发布时间】:2012-07-22 17:25:13
【问题描述】:

可能重复:
Create a CSV File for a user in 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";
}
?>

我不知道如何从$query 输出中生成 CSV 并触发下载。

感谢您的帮助!

【问题讨论】:

  • 请不要将mysql_* 函数用于新代码。它们不再维护,社区已经开始deprecation process。看到red box?相反,您应该了解prepared statements 并使用PDOMySQLi。如果您不能决定,this article 将帮助您选择。如果你想学习,here is good PDO tutorial
  • 谢谢@ManseUK。将尝试阅读 PDO 和 MySQLi。关于可能的重复,是的,可能是这样,但我不太明白它的意思。基本上我想从$results 数组中创建一个CSV,我不知道该怎么做。
  • 我已尝试实施第一条评论中的链接,编辑了我的帖子,但下载的 CSV 文件包含“SCREAM”错误。我做错了什么?
  • header 函数调用之前,您是否在回响任何内容?
  • @ManseUK,明白了,非常感谢!

标签: php mysql csv


【解决方案1】:

将内容类型更改为 text/csv

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

并将 header() 调用移动到脚本的顶部。

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

【讨论】:

    猜你喜欢
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 2020-10-27
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多