Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的PHP生成的CSV文件正在另存为PHP文件_Php_Mysql_Csv - Fatal编程技术网

我的PHP生成的CSV文件正在另存为PHP文件

我的PHP生成的CSV文件正在另存为PHP文件,php,mysql,csv,Php,Mysql,Csv,我从另一个StackOverflow问题中学习了如何从MySQL数据创建CSV文件。我的问题是,出于某种原因,当我调用这段代码时,它试图保存一个名为index.php(当前页面)的文件。在index.php文件中,表中的数据在那里,用逗号分隔。我猜我的某个地方有一个小的打字错误,但是在玩了代码之后我找不到它。谢谢所有能帮忙的人 $result=mysql_query("SELECT * from tbl_email"); if(mysql_num_rows($result)) { heade

我从另一个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();
}

您需要多个
header()
调用,而不是在一行上提供多个头的一个调用,我认为CSV最合适的mime类型是
text/CSV

header("Content-type: text/csv");
header("Content-Disposition: inline; filename=messages.csv");
更常见的是,我们会使用
内容处置:附件
强制下载

header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=messages.csv");
应该是:

header('Content-type: application/csv');
header('Content-Disposition: attachment; filename="messages.csv"');
请注意,filename的值没有正确地用双引号括起来。尝试在php中使用单引号,这将为您节省很多麻烦。;)


查看以了解有关告诉浏览器下载文件的更多信息。

这就成功了!谢谢出于好奇,您必须拆分这两个文件是否有原因?@user1470755
header()
向输出流发送一个带有相应换行符的文件头。内容类型和内容处置是两个不同的标题,而不是同一标题的两个部分,因此必须单独发送。这很有意义。我会在几分钟内接受你的回答,因为它不会让我马上回答