PHP php csv生成器函数在第二次调用时失败

时间:2012-08-06 15:03:09

标签: php http-headers

我编写了一个用于导出MySQL表信息的类。这是成功完成此任务的最终功能:

class CSVExport{
private $file_name;
private $csv_data;


public function  collectAllDataFromTable($table,$file_prefix,$date){

    $sql = "SHOW COLUMNS FROM ".$table."";
    $result = mysql_query($sql);
    if(!$result){
        die("Query failed ".mysql_error());
    }
    if(mysql_num_rows($result)>0){
        $i = 0;
        $csv_output = '';
        while($row = mysql_fetch_assoc($result)){
            $csv_output .= $row['Field'].",";
            $i++;

        }


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


   // return $csv_output;
    $this->file_name = $file_prefix."_".$date;
    $this->csv_data = $csv_output;

} // End "exportAllDataFromTable"  method


public function exportData(){
    header("Content-type: application/vnd.ms-excel");
    header("Content-disposition: csv" . date("Y-m-d") . ".csv");
    header( "Content-disposition: filename=".$this->file_name.".csv");

    print $this->csv_data;exit;    

}  // End 'exportData' method




} // End Db_Export

但是当我第二次使用不同的参数调用exportData()时,它不会为我下载文件。

可能是什么问题?

1 个答案:

答案 0 :(得分:2)

您一次只能向浏览器发送一个文件*。

此外,您在导出结束时调用exit(),这将结束脚本执行。

*理论上,有多部分的回复,但它们没有日常相关性(还)。