使用PHP更改MySQL数据库中的CSV格式

使用PHP更改MySQL数据库中的CSV格式,php,mysql,csv,Php,Mysql,Csv,我发现了一个类似的问题,但由于缺乏信息,没有解决方案。 下面的代码将数据从连接的MySQL数据库输出到以下格式的格式化CSV文件 First Name:Surname:GCNumber:Dept:Start Date:Introduction:Theory:Fire Safety:Governance: John:Smith:123456:HR:03/08/2013:Pass:Pass:Fail:Pass: Jane:Watson:123445:IT:03/08/2013:Pass:Fail:P

我发现了一个类似的问题,但由于缺乏信息,没有解决方案。 下面的代码将数据从连接的MySQL数据库输出到以下格式的格式化CSV文件

First Name:Surname:GCNumber:Dept:Start Date:Introduction:Theory:Fire Safety:Governance: John:Smith:123456:HR:03/08/2013:Pass:Pass:Fail:Pass: Jane:Watson:123445:IT:03/08/2013:Pass:Fail:Pass:Pass: Mark:Byron:123442:IT:03/08/2013:Fail:Fail:Not Done:Not Done:
=仅用于显示每列

所以,我需要的不是每个人的一个条目,以及他们完成的每个模块的结果,而是每个人完成的模块的一个单独条目。 总的来说,这个DB和35个模块有更多的字段,但为了便于说明,我在这里把它删掉了

作为一个PHP等方面的新手,我正在努力弄清楚如何做到这一点。 这是可能的,还是更容易尝试将数据库的结构更改为所需的格式

任何正确方向的帮助或指点都会很好。 托尼


您可以为此使用联合体:

SELECT fldFirstname as 'First Name', fldSurname as 'Surname', 
  fldGMCNumber as 'GCNumber', fldDestDept as 'Dept', 
  fldStartDate as 'Start Date', fldEndDate as 'End Date', 
  'Introduction' as 'Module', fldModule1 as 'Status' FROM records
UNION
SELECT fldFirstname,fldSurname,fldGMCNumber,fldDestDept,fldStartDate,fldEndDate,
  'Theory',fldModule2 FROM records
UNION
SELECT fldFirstname,fldSurname,fldGMCNumber,fldDestDept,fldStartDate,fldEndDate,
  'Fire Safety',fldModule3 FROM records
UNION
SELECT fldFirstname,fldSurname,fldGMCNumber,fldDestDept,fldStartDate,fldEndDate,
  'Governance',fldModule4 FROM records
ORDER BY Surname, `First Name`, Module;

我会在数据库的查询中使用轴心。在

因此,您基本上会创建一个表,其中包含描述模块的行:

Module 
1 | Introduction 
2 | Theory 
3 | Fire Safety 
4 | Governance

然后将它连接到上面的表中,并使用“Case”语法来实现您的请求。

向我展示您的表结构和示例数据……事实上,有了这些信息,解决这个问题就很容易了
SELECT fldFirstname as 'First Name', fldSurname as 'Surname', 
  fldGMCNumber as 'GCNumber', fldDestDept as 'Dept', 
  fldStartDate as 'Start Date', fldEndDate as 'End Date', 
  'Introduction' as 'Module', fldModule1 as 'Status' FROM records
UNION
SELECT fldFirstname,fldSurname,fldGMCNumber,fldDestDept,fldStartDate,fldEndDate,
  'Theory',fldModule2 FROM records
UNION
SELECT fldFirstname,fldSurname,fldGMCNumber,fldDestDept,fldStartDate,fldEndDate,
  'Fire Safety',fldModule3 FROM records
UNION
SELECT fldFirstname,fldSurname,fldGMCNumber,fldDestDept,fldStartDate,fldEndDate,
  'Governance',fldModule4 FROM records
ORDER BY Surname, `First Name`, Module;
Module 
1 | Introduction 
2 | Theory 
3 | Fire Safety 
4 | Governance