duanli3277
2011-05-09 19:32
浏览 63
已采纳

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

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 excel, 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 .= "
";

$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 .= "
";
}

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

图片转代码服务由CSDN问答提供 功能建议

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

  $ link = mysql_connect($ host,$ user,$ pass)或die(“无法连接。”。mysql_error()); 
mysql_select_db(  $ db)或die(“无法连接。”); 
 
 $ result = mysql_query(“SHOW COLUMNS FROM trans”,$ link); 
 $ i = 0; 
if(mysql_num_rows($ result)&gt  ; 0){
while($ row = mysql_fetch_assoc($ result)){
 $ csv_output。= $ row ['Field']。“,”; 
 $ i ++; 
} 
} 
 $ csv_output  。=“
”; 
 
 $ values = mysql_query(“SELECT * FROM trans”,$ link); 
while($ rowr = mysql_fetch_row($ values)){
for($ j = 0; $ j&lt;  ; $ i; $ j ++){
 $ csv_output。= $ rowr [$ j]。“,”; 
} 
 $ csv_output。=“
”; 
} 
 
 $ 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; 
   
 <  / DIV>
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • douyun7285 2011-05-09 19:37
    已采纳

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

    header("Content-type: text/csv");
    
    已采纳该答案
    打赏 评论
  • douzhai1182 2011-05-09 20:03

    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
    打赏 评论

相关推荐 更多相似问题