2012-11-25 49 views
1

我輸出一個臨時表到csv文件,但它只獲取一行?我的csv文件只獲取一行

這裏是代碼

$fileName = fopen('cmv_sailings.csv', 'w'); 

while ($i = mysql_fetch_assoc($export)) { 
    $ship = $i['code']; 
    $title = $i['title']; 
    $sailDate = $i['sailDate']; 
    $fromPort = $i['fromport']; 
    $nights = $i['nights']; 
    $grade = $i['type']; 
    $fare = $i['fare']; 
    $offer = $i['offerFare']; 
    $deposit = $i['deposit']; 

    $content = $ship.','.$title.','.$sailDate.','.$fromPort.','.$nights.','.$grade.','.$fare.','.$offer.','.$deposit.'\n'; 

    fwrite($fileName, $content); 
} 

fclose($filename); 

我還沒有一點頭緒了。我正在嘗試使用fputcsv,但我無法正常工作

+0

什麼是SQL查詢?什麼是表格內容? –

+0

你從sql select中得到了多少行? – lvil

+0

另外,不鼓勵使用'mysql_'擴展名。它不支持預準備語句。 –

回答

0

使用這樣的,我可以在代碼中看到正在使用的\ n這就是爲什麼新行字符是沒有得到您的CSV文件中添加你得到你的結果在單引號的主要問題一個單行

$content = $ship.','.$title.','.$sailDate.','.$fromPort.','.$nights.','.$grade.','.$fare.','.$offer.','.$deposit."\n"; 
fwrite($fileName, $content); 
3

在您的代碼中,在$content變量賦值的末尾,將'\n'更改爲"\n"。在php中,使用單引號時不會插入轉義序列。使用雙引號時會插入它們。你會得到一個字面反斜槓,然後是文字n,而不是你正在尋找的換行符。

至於使用fputcsv(),由於您的平臺使用了不正確的換行符,因此可能不適合您。這發生在Mac上。如果這是您的問題,請嘗試在文件解析代碼之前打開auto_detect_line_endings。您可以使用ini_set()這樣在運行時做到這一點:

ini_set('auto_detect_line_endings', '1'); 
0
$content = $ship. ... .'\n'; 

要附加一個反斜槓和n的文件,而不是換行符。試試這個:

$content = $ship. ... ."\n"; 
0
  1. 使用mysql_不是一個好主意,現在好了,但在未來,遷移到PDO或mysqli的
  2. 手動準備CSV,不是一個好主意,特殊字符必須進行轉義,使用fputcsv description here
  3. 爲什麼你的CSV只有一行,我認爲是由於格式問題(或缺少格式),從你的格式化方式。