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

Hug*_*ugo 8 php mysql pdo fetch

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

例如: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;
Run Code Online (Sandbox Code Playgroud)

VMa*_*Mai 17

你应该对PDO说,你只想要一个关联数组或一个带编号的数组:

while ($rows_get_rows = $result_get_rows->fetch(PDO::FETCH_ASSOC)) 
Run Code Online (Sandbox Code Playgroud)

得到一个关联数组或

while ($rows_get_rows = $result_get_rows->fetch(PDO::FETCH_NUM)) 
Run Code Online (Sandbox Code Playgroud)

获取由列号索引的数组

来自PDOStatement :: fetch

fetch_style

控制下一行将如何返回给调用者.该值必须是PDO :: FETCH_*常量之一,默认值为PDO :: ATTR_DEFAULT_FETCH_MODE(默认为PDO :: FETCH_BOTH).

PDO :: FETCH_ASSOC:返回由结果集中返回的列名索引的数组

PDO :: FETCH_BOTH(默认值):返回由结果集中返回的列名和0索引列号索引的数组