小编典典

PDO准备好的语句fetch()返回双精度结果

mysql

我有一个输出到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;

阅读 215

收藏
2020-05-17

共1个答案

小编典典

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

2020-05-17