2012-07-01 88 views
1

我學會了如何從另一個StackOverflow問題的MySQL數據創建CSV文件。我的問題是,由於某種原因,當我調用此代碼時,它會嘗試保存名爲index.php(這是當前頁面)的文件。在index.php文件裏,我的數據來自表格,用逗號分隔。我猜我在某個地方有一個小錯字,但在玩完代碼後我找不到它。感謝任何能提供幫助的人。我的PHP生成的CSV文件保存爲PHP文件

$result=mysql_query("SELECT * from tbl_email"); 
if(mysql_num_rows($result)) { 
    header ("Content-type: application/csv Content-Disposition:\"inline; filename=messages.csv\""); 
    echo "REF #,Company,Name,Email,Message,Date\n"; 
    while($row = mysql_fetch_row($result)) { 
    $companyname = mysql_query("SELECT company FROM tbl_users WHERE user_id ='$row[1]'"); 
    $datname = mysql_fetch_array($companyname); 
    echo"$row[7],$datname[company],$row[2],$row[4],$row[5],$row[6]\n"; 
    } 
    die(); 
} 

回答

3

您需要多個header()調用而不是一對一呼叫在一行上提供多個頭,而且我相信一個CSV最合適的MIME類型text/csv

header("Content-type: text/csv"); 
header("Content-Disposition: inline; filename=messages.csv"); 

更常見的是,我們將使用Content-Disposition: attachment來強制下載。

header("Content-type: text/csv"); 
header("Content-Disposition: attachment; filename=messages.csv"); 
+0

這樣做的竅門!謝謝。出於好奇,你是否有理由將兩者分開? – user1470755

+0

@ user1470755'header()'使用後續的適當換行符將單個頭部發送到輸出流。內容類型和內容處理是兩個不同的標題,而不是同一標題的兩個部分,因此必須單獨發送。 –

+0

這很有道理。我會在幾分鐘之內接受你的答案,因爲它不會讓我立即 – user1470755