2015-05-12 35 views
4

我試着用過去的標題做它,但它要麼下載一個空的CSV文件或PHP文件本身。目前我的代碼將數據導出到CSV文件,並將其存儲在服務器上。但我希望它下載文件。我該怎麼做呢?

<?php 
 
    $database = new PDO('mysql:host=localhost;dbname=DB_Name', "root", ""); 
 

 
    $sql = "SELECT Card_ID, Card_UID, Card_Type FROM cards"; 
 

 
    $stmt = $database->prepare($sql); 
 
    $stmt->execute(); 
 

 
    $filename = 'MyCSVFile-'.date('Y-m-d').'.csv'; 
 

 
    $data = fopen($filename, 'w'); 
 

 
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
 
     fputcsv($data, $row); 
 
    } 
 
    fclose($data); 
 
?>

回答

2

嘗試這樣你可以得到你的結果。

<?php 
$database = new PDO('mysql:host=localhost;dbname=DB_Name', "root", ""); 

header('Content-Type: text/csv; charset=utf-8'); 
header('Content-Disposition: attachment; filename=data.csv'); 

$sql = "SELECT Card_ID, Card_UID, Card_Type FROM cards"; 

$stmt = $database->prepare($sql); 
$stmt->execute(); 

$data = fopen('php://output', 'w'); 

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
    fputcsv($data, $row); 
} 
fclose($data); 

?>

+0

啊,那工作!謝謝。我注意到的最後一件事是,如果我在PHP頁面中有任何HTML,它也會將它打印在CVS文件中。我猜我只需要分割我的HTML和PHP? – MTMaas

+0

你必須放置標題,因爲通過使用標題,你可以告訴瀏覽器該文件將被下載,而不是直接在瀏覽器中打開。 –

相關問題