我发现了一个类似的问题,但由于缺乏信息而没有解决方案。我有下面的代码,它将数据从连接的 MySQL DB 输出到以下格式的格式化 CSV 文件......</p>
名字:姓:GCNumber:部门:开始日期:介绍:理论:消防安全:治理: 约翰:史密斯:123456:HR:03/08/2013:通过:通过:失败:通过: 简:沃森:123445:IT:03/08/2013:通过:失败:通过:通过: 马克:拜伦:123442:IT:03/08/2013:失败:失败:未完成:未完成:
:
= 仅用于显示每一列
它只是以相同的结构输出数据库中的所有行和列,并重命名列标题以在导入 Excel 时更友好。我需要将此输出的格式更改为以下...</p>
名字:姓:GCNumber:部门:电子邮件:开始日期:模块:状态: 约翰:史密斯:123456:HR:03/08/2013:简介:通过: 约翰:史密斯:123456:HR:03/08/2013:理论:通过: 约翰:史密斯:123456:HR:03/08/2013:消防安全:失败: 约翰:史密斯:123456:HR:03/08/2013:治理:通过: Jane:Watson:123445:IT:03/08/2013:Introduction:Pass: 简:沃森:123445:IT:03/08/2013:理论:失败: 简:沃森:123445:IT:03/08/2013:消防安全:通过: 简:沃森:123445:IT:03/08/2013:治理:通过: 马克:拜伦:123442:IT:03/08/2013:简介:失败: 马克:拜伦:123442:IT:03/08/2013:理论:失败: 标记:拜伦:123442:IT:03/08/2013:消防安全:未完成: 马克:拜伦:123442:IT:03/08/2013:治理:未完成:
:
= 仅用于显示每一列
因此,不是每个人都有一个条目,以及他们完成的每个模块的结果,我需要它是每个人完成的每个模块的单独条目。这个数据库和 35 个模块总共有更多的字段,但为了说明的目的,我已经把它删掉了。
作为一个 PHP 等的新手,我正在努力弄清楚如何做到这一点。这是可能的还是尝试将数据库的结构更改为所需的格式会更容易?
任何朝着正确方向的帮助或指示都会很棒。托尼
<?php
function exportMysqlToCsv($table,$filename = 'db-snapshot.csv')
{
$sql_query = "select fldFirstname as 'First Name',
fldSurname as 'Surname',
fldGMCNumber as 'GCNumber',
fldDestDept as 'Dept',
fldStartDate as 'Start Date',
fldModule1 as 'Introduction',
fldModule2 as 'Theory',
fldModule3 as 'Fire Safety',
fldModule4 as 'Governance'
from $table";
// Gets the data from the database
$result = mysql_query($sql_query);
$f = fopen('php://temp', 'wt');
$first = true;
while ($row = mysql_fetch_assoc($result)) {
if ($first) {
fputcsv($f, array_keys($row));
$first = false;
}
fputcsv($f, $row);
} // end while
$size = ftell($f);
rewind($f);
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Length: $size");
// Output to browser with appropriate mime type, you choose ;)
header("Content-type: text/x-csv");
// header("Content-type: text/csv");
// header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=$filename");
fpassthru($f);
exit;
}
?>