2015-09-17 54 views
0

我已經有代碼什麼是工作,看看下面:結果數組投入.TXT PHP

while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) { 

if($h = fopen('file.txt', 'a')) { 

fputcsv($h,$row); 

fclose($h); 

} 
} 

和輸出在這種情況下:

11:11:11:11:11:11 
22:22:22:22:22:22 
33:33:33:33:33:33 

我需要輸出爲:

11:11:11:11:11:11,22:22:22:22:22:22,33:33:33:33:33:33 

回答

0

記住,你的while循環將遍歷每一次有一行數據。通常,您要避免打開文件,寫入文件,然後關閉它,打開,寫入,關閉等。

通常,將所有數據聚集在一起然後編寫它是個好主意。

此外,fputcsv()僅將逗號放在單個數組值上。

解決方案是將所有加入到一個數組,然後運行fputcsv():

while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) { 
    $data[] = $row['mac']; 
} 

if($h = fopen('file.txt', 'a')) { 

    fputcsv($h,$data); 

    fclose($h); 
} 

注:你需要與你的MySQL來代替 'MAC' 在$行[ 'MAC']列名


我與一個MySQL數據庫進行了測試,它成功地輸出(到file.txt的):

11:11:11:11:11:11,22:22:22:22:22:22,33:33:33:33:33:33 
+0

它的工作。非常感謝。乾杯... :) –

+0

現在我檢查了我的整個代碼,並且文件讓我有問題,因爲它有一個明確的行 1 11:11:11:11:11:11,22:22:22:22:22 :22,33:33:33:33:33:33 我的意思是我只需要一個從最後一點退格... 你有想法如何解決這個問題嗎? –

0

而不是使用每次添加換行符的fputcsv,您可以使用fwrite:

$h = fopen('file.txt', 'a') 
if ($h) { 
    $count = 0; 
    while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) { 
    if ($count !== 0) { 
     fwrite($h, ','); 
    } 
    fwrite($h, $row); 
    $count++; 
    } 
    fclose($h); 
} 
0

它使用的內存,存儲數據:

if($h = fopen('file.txt', 'a')) { 

while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) { 

$rows[] = join(":", $row); 

} 

$data = join(",", $rows); 

fwrite($h,$data); 
fclose($h); 

}