2011-02-14 45 views
1

我使用這個fputcsv代碼:PHP fputcsv輸出雙記錄

$result = mysql_query('SELECT * FROM `mash`'); 
if (!$result) die('Couldn\'t fetch records'); 
$fp = fopen('testCSV.csv', 'w'); 
if ($fp && $result) { 
    while ($row = mysql_fetch_array($result)) { 
     fputcsv($fp, array_values($row)); 
    } 
    die; 
} 
fclose($fp); 

它輸出CSV偉大的,但有兩列每個MySQL的列(所以一切加倍)

任何人都可以看到爲什麼會這樣?

+1

如果查詢失敗,那麼會死掉,這會結束程序,所以當它不可能是錯誤的時候檢查`$ result`沒有意義。在關閉文件指針之前,你也在循環結束程序後「死掉」。爲什麼? – 2011-02-14 15:40:29

回答

5

試試這個:

$result = mysql_query('SELECT * FROM `mash`'); 
if (!$result) die('Couldn\'t fetch records'); 
$fp = fopen('testCSV.csv', 'w'); 
if ($fp && $result) { 
    while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) { 
     fputcsv($fp, array_values($row)); 
    } 
    die; 
} 
fclose($fp); 

mysql_fetch_array將默認返回一個組合陣列,這樣只會返回關聯數組。或者使用MYSQL_NUM進行編號 - http://php.net/manual/en/function.mysql-fetch-array.php

+0

非常感謝你的回答。我遇到了這篇文章中描述的問題,你的回答完全解決了我所面臨的問題。謝謝! – JeremyCanfield 2016-04-02 01:20:42

0

mysql_fetch_array()同時返回一個數字和關聯索引默認:

引述手冊(重點煤礦):

返回字符串的數組 對應於所提取的行,或 如果沒有更多行,則爲FALSE。返回數組的 類型取決於如何定義 result_type。 通過使用 MYSQL_BOTH(默認),您將得到一個 數組,其中包含關聯索引和數字索引 。使用MYSQL_ASSOC,你只 得到關聯索引(如 mysql_fetch_assoc()那樣),使用 MYSQL_NUM,你只能得到一些指數 (如和mysql_fetch_row()那樣)。

解決方案: