SQL数据导出脚本,创build损坏的文件

好的,所以我有下面的脚本,将使用PHP从我的数据库中导出数据。 一切工作正常,除非当我尝试在Excel中打开文件,我得到“文件已损坏”。 之前我已经使用过这个脚本,但是我不明白为什么它不能正常工作。 这可能是一个简单的解决scheme,我看不到。 提前致谢!

$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("Ym-d_H-i",time()); header("Content-type: application/vnd.ms-excel"); header("Content-disposition: csv" . date("Ymd") . ".csv"); header( "Content-disposition: filename=".$filename.".csv"); print $csv_output; exit; 

我认为内容types是不正确的。 尝试使用此代替:

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

我在这里有几点build议:

  1. 你有没有考虑使用SELECT INTO OUTFILE ? 如果可能的话,这可能是最好的办法。
  2. 如果你不想/不能使用SELECT INTO OUTFILE ,那么PHP就具有编写CSV输出的本地函数,可以处理诸如为你转义的内容。 有关更多信息,请参见fputcsv()手册页 。 用户注释中有一些示例显示如何直接输出。
  3. 确保在excel中打开文件时select正确的分隔符,转义等