PDO准备语句fetch()返回双重结果

时间:2014-07-23 21:56:39

标签: php mysql pdo fetch

我有一个输出到CSV文件的脚本。但是,即使数据库中当前有一行,我得到的输出也是从表中每行反映出的两列。

例如: 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;

1 个答案:

答案 0 :(得分:17)

你应该对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索引列号