2014-07-23 54 views
7

我有一個輸出到CSV文件的腳本。但是,即使數據庫中目前有一行,我得到的輸出是兩次從表中每行的每列回顯。PDO準備語句fetch()返回雙重結果

例如: 1,1,約翰,約翰·史密斯,史密斯,2014,2014 應 1,約翰·史密斯2014年

之前,我與PDO和準備語句去這工作得很好,所以我想也許我不理解fetch()如何正確工作。 以下是我的代碼。任何想法我可能做錯了什麼?

// get rows 
$query_get_rows = "SELECT * FROM Contacts ORDER BY date_added DESC"; 
$result_get_rows = $conn->prepare($query_get_rows); 
$result_get_rows->execute();   
$num_get_rows = $result_get_rows->rowCount(); 

while ($rows_get_rows = $result_get_rows->fetch()) 
{ 
    $csv .= '"'.join('","', str_replace('"', '""', $rows_get_rows))."\"\n"; 
} 
echo $csv; 
exit; 

回答

16

你應該說PDO,你只想要一個關聯數組或編號數組:

while ($rows_get_rows = $result_get_rows->fetch(PDO::FETCH_ASSOC)) 

得到一個關聯數組或

while ($rows_get_rows = $result_get_rows->fetch(PDO::FETCH_NUM)) 

獲取數組索引列號爲

from PDOStatement::fetch

fetch_style

控制的下一行如何將返回給調用者。 該值必須是PDO :: FETCH_ *常量之一,默認爲 PDO :: ATTR_DEFAULT_FETCH_MODE(默認爲 PDO :: FETCH_BOTH)的值。

PDO :: FETCH_ASSOC:返回按列名索引的數組作爲你的結果返回 設置

PDO :: FETCH_BOTH(默認):返回雙方列 名和0索引的索引的數組在結果集中返回列號

+0

感謝您的解釋。我假設所有這一次只有fetch_assoc有效。 var_dump顯示了你發佈的內容! – Hugo