使用csv_from_result在CSV导出中返回字符串而不是数据库条目

时间:2014-03-20 12:55:41

标签: php mysql codeigniter csv

我使用codeigniter从数据库条目生成CSV。以下代码可以使用

$this->load->dbutil();
$csv = $this->dbutil->csv_from_result($stories);
echo $csv;

$name = 'data.csv';

// Build the headers to push out the file properly.
header('Pragma: public');     // required
header('Expires: 0');         // no cache
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private',false);
header('Content-Disposition: attachment; filename="'.basename($name).'"');  // Add the file name
header('Content-Transfer-Encoding: binary');
header('Connection: close');
exit();

force_download($name, $csv);
fclose($fp);

但是,我有两个问题。

1)为什么我的代码依赖于回显$ CSV?如果我注释掉这一行,它会返回一个空白的cvs。

2)如何获取$ CSV变量并进行编辑。目前,我的数据库将一些信息存储为整数,控制器在网站的正常运行中转向字符串,即我可能将数据库中的优先级存储为0,1,2,但在视图中我显示为Urgent,high,low。我想在导出的CSV而不是数据库条目中显示这些字符串。关于我是怎么做的,我有点困惑。我正在考虑使用switch语句的循环,但我真的不知道如何与$ CSV变量进行交互 - 或者我应该在数据仍然在对象而不是csv_from_result()

的模型中这样做

1 个答案:

答案 0 :(得分:1)

1)$csv包含所有信息,它是构成文件的所有内容。这就是为什么如果你不回应它,你只需要一个空白的CSV文件。

2)您不想编辑$csv,该变量包含准备好的所有内容。您想要编辑$stories,其中包含您上面粘贴的内容,其中包含数据库中的所有内容,然后由$this->dbutil->csv_from_result转换为CSV。查看代码并找到加载$stories的位置,然后修改它。