我编写了一个用于导出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()
时,它不会为我下载文件。
可能是什么问题?
答案 0 :(得分:2)
您一次只能向浏览器发送一个文件*。
此外,您在导出结束时调用exit()
,这将结束脚本执行。
*理论上,有多部分的回复,但它们没有日常相关性(还)。