我已经学会了如何从另一个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();
}
答案 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/,了解有关告知浏览器下载文件的详情。