我正在尝试使用php将表格导出为CSV文件,并使用以下代码:
while($row = $results->fetchArray()) {
print '"' . stripslashes(implode('","',$row)) . "\"\n";
}
但是,当我查看CSV文件时,它会创建每个字段的重复项。我不知道如何将它们限制在每场一个。
答案 0 :(得分:1)
这是因为SQLite3Result::fetchArray
默认情况下为结果中的每列提取数字和命名索引。所以$row
可能如下所示:
array(
0 => 'Fred',
'firstname' => 'Fred',
1 => 'Jones',
'lastname' => 'Jones',
2 => 'fredjones@example.com',
'email' => 'fredjones@example.com'
)
解决这个问题的方法是通过传递一个常量来指定fetchArray
调用中的其他行为:
while ($row = $results->fetchArray(SQLITE3_ASSOC)) {
这意味着只会获取列的名称。同样,你可以做SQLITE3_NUM
:在你的情况下,它没有任何区别。
另请注意,输出CSV数据的更好方法是使用fputcsv
方法,该方法可根据需要处理机箱和转义。它需要一个文件句柄:如果你只想回显数据,你可以使用STDOUT
常量:
fputcsv(STDOUT, $row);
答案 1 :(得分:0)
fetchArray
默认返回关联和数字索引。要仅返回数字索引,请使用:
while($row = $results->fetchArray( SQLITE3_NUM )) {
或者返回一个关联数组使用:
while($row = $results->fetchArray( SQLITE3_ASSOC )) {