开发者

sql data export script, creating corrupt file

开发者 https://www.devze.com 2023-03-03 20:09 出处:网络
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 corrup

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

精彩评论

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