2013-07-08 62 views
0

我創建一個SQL查詢csv文件:刪除SQL轉儲文件

 $sql = "SELECT 'id','username','name','email', 
     'phone_number','city', 
     'batch','course_type' UNION ALL 
     SELECT id, username, name, email, 
     phone_number, city, batch, course_type 
     FROM users INTO OUTFILE '".$file_path."' ". 
     "FIELDS TERMINATED BY ',' 
     ENCLOSED BY '\"' 
     LINES TERMINATED BY '\n'"; 

造成這個文件的瀏覽器強制下載後,我需要從/ tmp目錄刪除該文件。但是,由於該文件是由MySQL擁有的,PHP代碼無法刪除它。如何在我的代碼中更改此文件的權限,以便可以刪除該文件?

+1

也許你可以從PHP創建一個文件?在這種情況下,您可以將此文件放在需要的地方,稍後再刪除。 – Andron

+0

作爲一般規則,如果您沒有權限刪除它,那麼您將無權更改權限。安德龍的解決方案可能是最簡單的。只需將結果返回給php,並從那裏將其回顯給瀏覽器,從而節省了臨時文件的需求 – Anigel

回答

0

一個解決方案是這樣做的權利,是(這是它如何做一個粗略的例子):

返回數據庫作爲一個數組中的數據,並通過它遍歷:

// tell the browser that this is a download 
header("Content-type: text/csv"); 
header("Content-Disposition: attachment; filename=list.csv"); 

// column separator  
$separator = ';'; 
// field delimiter 
$field_delimiter = '"'; 
// line end 
$line_end = "\r\n"; 

foreach ($result as $row): 

    $i = 0; 

    foreach ($row as $item): 
     // do not add separator before the first item 
     if ($i > 0) 
     { 
      echo $separator; 
     } 

     echo $field_delimiter.$item.$field_delimiter; 

     $i++; 

    endforeach; 

    // line end 
    echo $line_end; 

endforeach; 

不要輸出任何內容,只是CSV內容。