2012-06-22 106 views
2

我有一個頁面正在使用的Wordpress主題模板文件。該模板查詢數據庫的數組,然後嘗試將結果輸出到csv文件。預計沒有輸出到瀏覽器。這裏是代碼:php://輸出結果爲空文件

/*** 
* Output an array to a CSV file 
*/ 
function download_csv_results($results, $name = NULL) 
{ 
if(! $name) 
{ 
    $name = md5(uniqid() . microtime(TRUE) . mt_rand()). '.csv'; 
} 

header('Content-Type: text/csv'); 
header('Content-Disposition: attachment; filename='. $name); 
header('Pragma: no-cache'); 
header("Expires: 0"); 

$outstream = fopen("php://output", "w"); 

foreach($results as $result) 
{ 
    fputcsv($outstream, $result); 
} 
fclose($outstream); 
} 

該文件按預期寫入用戶的下載目錄,但它是空的。我已經調試來驗證是否有117個元素的結果。上面的循環正在執行。就好像輸出緩衝區沒有被刷新或被Wordpress清除。

+0

你試過用'ob_'functions? – Havelock

回答

1

你能嘗試使用:

$outstream = fopen("php://output", "a"); 

代替:

$outstream = fopen("php://output", "w"); 
+0

非常感謝Phenix。不幸的是,結果是相同的。 –

+0

你用fwrite()而不是fputcsv()來試試嗎? –

+0

謝謝。 fwrite可以做到這一點。我只需要格式化數組輸出以根據需要使用逗號和引號。 –