开发者

sql data export script, creating corrupt file

Ok, so I have the following script that will export data from my database using php. Everything works fine, except when I try to open the file in exce开发者_StackOverflow社区l, I get "file is corrupt". I have used this script before, and I cannot figure out why it's not working. It may be a simple solution that I cannot see. Thanks in advance!

$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;


I think the Content-type is incorrect. Try using this instead:

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


I have a few suggestions here:

  1. Have you considered using SELECT INTO OUTFILE? If possible, this is probably the best way to do it.
  2. If you don't want to / can't use SELECT INTO OUTFILE, PHP has native functions for writing CSV output, that handles things like escaping for you. See the fputcsv() manual page for more info. There's some examples in the user comments showing how to output it directly.
  3. Make sure you choose the correct delimeters, escape, etc. when opening up the file in excel
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜