我正在使用 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 变量并对其进行编辑。目前,我的数据库将一些信息存储为整数, Controller 在站点正常运行时将其转换为字符串,即我可能将数据库中的优先级存储为 0,1,2,但在 View 中我显示紧急,高,低。我想在导出的 CSV 中而不是数据库条目中显示这些字符串。我对如何做到这一点有点困惑。我正在考虑使用 switch 语句的循环,但我真的不知道如何与 $CSV 变量交互 - 或者我应该在数据仍在对象中而不是 csv_from_result() 的模型中执行此操作
最佳答案
1) $csv
包含所有信息,它是构成文件的所有内容。这就是为什么如果您不回显它,您只会得到一个空白的 CSV 文件。
2) 您不想编辑 $csv
,该变量包含一切准备就绪的内容。您想要编辑 $stories
,从上面粘贴的内容来看,它包含数据库中的所有内容,然后通过 $this->dbutil->csv_from_result
转换为 CSV >。查看您的代码并找到 $stories
的加载位置,然后对其进行修改。
关于php - 使用 csv_from_result 在 CSV 导出中返回字符串而不是数据库条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22533699/