我的PHP生成的CSV文件保存为PHP文件

时间:2012-07-01 03:27:07

标签: php mysql csv

我已经学会了如何从另一个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();
}

2 个答案:

答案 0 :(得分: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");

答案 1 :(得分:0)

应该是:

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

请注意,双引号没有正确包含filename的值。尝试在php中使用单引号,这将为您节省很多麻烦。 ;)

请查看http://www.techcoil.com/blog/php-codes-to-tell-browsers-to-open-the-download-dialog-box-for-users-to-download-a-file/,了解有关告知浏览器下载文件的详情。