2013-02-01 53 views
-1

我想查詢一個表.csv文件並自動下載它。該文件是使用適當的數據創建的,但下載的文件顯示錯誤的數據。查詢SQL表到一個csv文件並下載它

$filename = 'file.csv'; 
$i=0; 
    try { 
     $stmt = $conn->prepare("SELECT DATE, TYPE, AMOUNT, BALANCE FROM TRANSACTIONS WHERE USERNAME=? ORDER BY DATE ASC"); 
     $stmt->execute(array($user)); 
     $num_rows = $stmt->rowCount(); 

     $handle = fopen($filename, 'w+') or die("can't open file"); 
     fputcsv($handle, array('Date','Type','Amount','Balance')); 
     while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 

      $row2[$i][0] = $row['DATE']; 
      $row2[$i][1] = $row['TYPE']; 
      $row2[$i][2] = $row['AMOUNT']; 
      $row2[$i][3] = $row['BALANCE']; 
      $i++; 
      echo $i; 
      fputcsv($handle, array($row['DATE'], $row['TYPE'], $row['AMOUNT'], $row['BALANCE'])); 
     } 

     fclose($handle); 
     header('Content-disposition: attachment; filename='.$filename); 
     header("Content-Type: application/force-download"); 
     header("Content-Length: " . filesize($filename)); 
     header("Connection: close"); 
     } catch(PDOException $e) { 
     echo 'ERROR: ' . $e->getMessage(); 
    } 

這是文件的樣子,當它在我的瀏覽器下載,如: enter image description here

有時候它看起來像這樣: enter image description here

,這是它的樣子時,它是在服務器上創建: enter image description here

創建的文件服務器始終包含適當的結構和數據。由於某種原因,爲用戶下載的文件是不同的並且是錯誤的。

代碼有什麼問題?

+0

請提取您的問題的某一部分。例如,PDO如何處理它? –

+0

對不起,你是什麼意思?我使用PDO查詢表格 – erdomester

+0

在你的腳本中看不到的破損的excel文件(查看文檔類型)中有一些明顯的奇怪現象。 –

回答

0

我輸入

$handle = fopen($filename, 'w+') or die("can't open file"); 

,而不是

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