php导出sqlite表到csv

时间:2013-11-02 22:11:19

标签: php sqlite csv

我正在尝试使用php将表格导出为CSV文件,并使用以下代码:

while($row = $results->fetchArray()) {
        print '"' . stripslashes(implode('","',$row)) . "\"\n";
    }

但是,当我查看CSV文件时,它会创建每个字段的重复项。我不知道如何将它们限制在每场一个。

2 个答案:

答案 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);

Running example

答案 1 :(得分:0)

fetchArray默认返回关联和数字索引。要仅返回数字索引,请使用:

while($row = $results->fetchArray( SQLITE3_NUM )) {

或者返回一个关联数组使用:

while($row = $results->fetchArray( SQLITE3_ASSOC )) {