2013-03-19 60 views
2

我試圖創建一個CSV文件,可以由用戶下載並且不會將數據永久保存在服務器上。使用PHP和mySQL從網絡搜索創建可下載的CSV

我在這個頁面上使用mySQL和PHP。我以正確的格式獲取數據以在網頁上顯示(「回聲」),但無法獲取文件以生成/下載......也許我錯過了某些東西或尋找錯誤的地方,但任何幫助都會很棒!

我一直在嘗試幾個劇本都我自己和別人,我發現,但我目前有如下:

$file = 'export'; 
$colresult = mysql_query("SHOW COLUMNS FROM ".$tbl_name.""); 

if (mysql_num_rows($colresult) > 0) { 
while ($row = mysql_fetch_assoc($colresult)){ 
$csv_output .= $row['Field'].", "; $i++; } } $csv_output .= "\n"; 

$csvresult = mysql_query($sql); 

while ($rowr = mysql_fetch_row($csvresult)) { 
for ($j=0;$j<$i;$j++) { $csv_output .= $rowr[$j].", "; 
} 

$csv_output .= "\n"; } 
$filename = $file."_".date("Y-m-d_H-i",time()).".csv"; 
header("Content-type: application/csv"); 
header("Content-disposition: attachment;filename=".$filename.".csv"); 
readfile("../documents/csv/".$filename.".csv"); 

$fp = fopen($filename, 'w'); 
foreach($csvret as $csvret){ 
fputcsv($fp, $csvret); 
} 

print $csv_output; 
print $filename; 

謝謝!

+0

你應該考慮如果您的數據包含逗號,會發生什麼 – Waygood 2013-03-19 16:50:35

+0

已在桌面上清理過。主要想要創建文件並從中解決問題。 – Cal37 2013-03-19 17:49:33

+0

然後你可以找到'implode(','$ record);'和'implode(',',array_keys($ record));''用於'mysql_fetch_assoc();' – Waygood 2013-03-20 09:15:23

回答

2

你需要傳遞一些頭強制Web瀏覽器將文件識別爲「下載」:

<?php 

header('Content-Description: File Transfer'); 
header("Content-Type: application/csv"); 
header('Content-Disposition: attachment; filename="'.basename($filename).'"'); 
header('Content-Transfer-Encoding: binary'); 
header('Connection: Keep-Alive'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($filename)); 

readfile($filename); 
exit; 

只需添加該代碼代替:

print $csv_output; 
print $filename;