1

我从另一个 StackOverflow 问题中学习了如何从 MySQL 数据创建 CSV 文件。我的问题是,由于某种原因,当我调用此代码时,它会尝试保存一个名为index.php(即当前页面)的文件。在index.php文件中,我的表中的数据在那里,用逗号分隔。我猜我在某个地方有一个小错字,但是在玩了代码之后我找不到它。感谢任何能提供帮助的人。

$result=mysql_query("SELECT * from tbl_email");
if(mysql_num_rows($result)) {
  header ("Content-type: application/csv Content-Disposition:\"inline; filename=messages.csv\"");
  echo "REF #,Company,Name,Email,Message,Date\n";
  while($row = mysql_fetch_row($result)) {
    $companyname = mysql_query("SELECT company FROM tbl_users WHERE user_id ='$row[1]'");
    $datname = mysql_fetch_array($companyname);
    echo"$row[7],$datname[company],$row[2],$row[4],$row[5],$row[6]\n";
  }
  die();
}
4

2 回答 2

3

您需要多次header()调用而不是一次调用在一行上提供多个标题,我相信最适合 CSV 的 mime 类型是text/csv.

header("Content-type: text/csv");
header("Content-Disposition: inline; filename=messages.csv");

更常见的是,我们会使用Content-Disposition: attachment强制下载。

header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=messages.csv");
于 2012-07-01T03:29:54.030 回答
0

它应该是:

header('Content-type: application/csv');
header('Content-Disposition: attachment; filename="messages.csv"');

请注意,文件名的值没有正确地用双引号括起来。尝试在php中使用单引号,这样会省去很多麻烦。;)

看看http://www.techcoil.com/blog/php-codes-to-tell-browsers-to-open-the-download-dialog-box-for-users-to-download-a-file/了解更多关于告诉浏览器下载您的文件的信息。

于 2012-07-01T03:40:44.760 回答