【问题标题】:Save query results to .csv with PHP使用 PHP 将查询结果保存到 .csv
【发布时间】:2015-05-13 22:41:58
【问题描述】:

我正在运行以下查询,我正在寻找将数据导出到 .csv 或 .xls 文件的最佳方式。

<?php

    $channels = ee()->db->select('channel_titles.entry_id, channel_titles.title, channel_data.field_id_164')
    ->from('channel_titles')
    ->join('channel_data', 'channel_titles.entry_id = channel_data.entry_id')
    ->where(array(
            'channel_titles.channel_id' => '12',
        ))
    ->or_where(array(
            'channel_titles.channel_id' => '31',
        ))
    ->get();

    if ($channels->num_rows() > 0)
    {
        $i = 0;
        foreach($channels->result_array() as $row)
        {
            $i++;
            echo $row['field_id_164'].",".$row['title']."<br />\n";
        }
        echo $i;
    }       

?>

我尝试了几种方法,但似乎无法找出最佳选择。

【问题讨论】:

  • 为什么需要将查询保存到 csv 文件中?

标签: php codeigniter export-to-csv


【解决方案1】:

经典的 echo explode(',',$col) 等方式很好,但你也可以使用php的内置函数直接写入csv文件。

    $filename = 'test.csv';
    $file = fopen($filename,"w");
    if ($channels->num_rows() > 0) {
        foreach($channels->result_array() as $key => $row) {
            if ($key==0) fputcsv($file, array_keys((array)$row)); // write column headings, added extra brace
            foreach ($row as $line) {
                $line = (array) $line;
                fputcsv($file, $line);
            }
        }
    }   

    fclose($file);

编辑:

如果您想立即下载/查看文件,您必须设置标题。

    $filename = 'test.csv';

    header('Content-type: application/csv');
    header('Content-Disposition: attachment; filename=' . $filename);
    header("Content-Transfer-Encoding: UTF-8");

    $file = fopen('php://output', 'a');
    if ($channels->num_rows() > 0) {
        foreach($channels->result_array() as $key => $row) {
            if ($key==0) fputcsv($file, array_keys((array)$row)); // write column headings, added extra brace
            foreach ($row as $line) {
                $line = (array) $line;
                fputcsv($file, $line);
            }
        }
    }  

    fclose($file);

【讨论】:

  • 这应该下载 csv 文件本身吗?我已添加代码,但收到一个空白页。
猜你喜欢
  • 1970-01-01
  • 2014-02-20
  • 2013-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多