簡體   English   中英

PDO 准備好的語句 fetch() 返回雙重結果

[英]PDO prepared statement fetch() returning double results

我有一個輸出到 CSV 文件的腳本。 但是,即使數據庫中當前只有一行,我得到的 output 也會將表中每一行的每一列回顯兩次。

例如:1,1,John,John,Smith,Smith,2014,2014 應該是 1,John,Smith,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;

您應該對 PDO 說,您只需要一個關聯數組或編號數組:

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

得到一個關聯數組或

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

獲取由列號索引的數組

PDOStatement::fetch

fetch_style

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

PDO::FETCH_ASSOC: 返回一個按列名索引的數組,如結果集中返回的那樣

PDO::FETCH_BOTH (默認) :返回一個由列名和 0 索引列號索引的數組,如結果集中返回的那樣

也許您的類與其方法之一具有相同的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM