2012-07-01 56 views
1

我学会了如何从另一个StackOverflow问题的MySQL数据创建CSV文件。我的问题是,由于某种原因,当我调用此代码时,它会尝试保存名为index.php(这是当前页面)的文件。在index.php文件里,我的数据来自表格,用逗号分隔。我猜我在某个地方有一个小错字,但在玩完代码后我找不到它。感谢任何能提供帮助的人。我的PHP生成的CSV文件保存为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(); 
} 

回答

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"); 
+0

这样做的窍门!谢谢。出于好奇,你是否有理由将两者分开? – user1470755

+0

@ user1470755'header()'使用后续的适当换行符将单个头部发送到输出流。内容类型和内容处理是两个不同的标题,而不是同一标题的两个部分,因此必须单独发送。 –

+0

这很有道理。我会在几分钟之内接受你的答案,因为它不会让我立即 – user1470755