sql数据导出脚本,创建损坏的文件

时间:2011-05-09 19:32:46

标签: php sql excel csv

好的,所以我有以下脚本将使用php从我的数据库导出数据。 一切正常,除非我尝试在excel中打开文件,我得到“文件已损坏”。 我之前使用过这个脚本,我无法弄清楚它为什么不起作用。这可能是一个我看不到的简单解决方案。提前谢谢!

$link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error());
mysql_select_db($db) or die("Can not connect.");

$result = mysql_query("SHOW COLUMNS FROM trans",$link);
$i = 0;
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$csv_output .= $row['Field'].",";
$i++;
  }
}
$csv_output .= "\n";

$values = mysql_query("SELECT * FROM trans",$link);
while ($rowr = mysql_fetch_row($values)) {
for ($j=0;$j<$i;$j++) {
$csv_output .= $rowr[$j].",";
  }
$csv_output .= "\n";
}

$filename = date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: filename=".$filename.".csv");
print $csv_output;

exit;

2 个答案:

答案 0 :(得分:1)

我认为内容类型不正确。请尝试使用此代码:

header("Content-type: text/csv");

答案 1 :(得分:0)

我在这里有一些建议:

  1. 您是否考虑过使用SELECT INTO OUTFILE?如果可能的话,这可能是最好的方法。
  2. 如果您不想/不能使用SELECT INTO OUTFILE,PHP具有用于编写CSV输出的本机函数,可以处理诸如转义之类的内容。有关详细信息,请参阅fputcsv() manual page。用户评论中有一些示例显示如何直接输出它。
  3. 确保在excel
  4. 中打开文件时选择正确的分隔符,转义等