0

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()別の引数を使用して2回目に呼び出すと、ファイルがダウンロードされません。

何が問題なのか?

4

1 に答える 1

2

ブラウザに送信できるファイルは一度に1つだけです*。

exit()また、エクスポートの最後に呼び出しているため、スクリプトの実行が終了します。

*理論的には、複数の部分からなる応答がありますが、それらには(まだ)日常的な関連性はありません。

于 2012-08-06T15:04:23.160 に答える