Cap*_*ack 3 php mysql sql csv duplicates
我正在向WordPress站点添加一个下载按钮,该站点将查询我们的数据库,并以CSV格式提供结果.
一切正常,但生成的CSV对于它返回的每一列都有一个重复的列.
我们检查了SQL查询,但它没有重复项.
以下是我们生成CSV的方法:
$rows = //Call to SQL query function
$fp = fopen('php://output', 'w');
fputcsv($fp, array_keys($rows));
foreach ($rows as $row) {
fputcsv($fp, $row);
}
$filename = "EventResults.csv";
header('Content-Type: text/csv');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=$filename");
Run Code Online (Sandbox Code Playgroud)
我们将SQL返回转换为PHP数组,如下所示:
$sql = "SELECT * FROM TABLE";
$statement = $this->db->prepare($sql);
$statement->execute();
return $statement->fetchAll();
Run Code Online (Sandbox Code Playgroud)
结果如下所示:
Lance,Lance,Armstrong,Armstrong,DEX,DEX,70,70,1,1,60,60,SEC,SEC,"10; 20; 30; 40","10; 20; 30; 40"
Run Code Online (Sandbox Code Playgroud)
当他们看起来像这样:
Lance,Armstrong,DEX,70,1,60,SEC,"10; 20; 30; 40"
Run Code Online (Sandbox Code Playgroud)
导致重复的原因是什么,我们如何摆脱它们?
PDO方法fetchAll()有一个参数fetch_style,如下所述将返回一个包含数字和命名关联键的数组,这会导致在遍历数组时有重复项.
你可以使用这里记录的PDO Fetch常量之一来设置它- 它们都是从它开始PDO::FETCH_并使用它来获得一个关联数组(PDO::FETCH_ASSOC)或一个数值数组(PDO::FETCH_NUM)
return $statement->fetchAll(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1410 次 |
| 最近记录: |