Php 操作/格式化数据库输出

Php 操作/格式化数据库输出,php,mysql,csv,Php,Mysql,Csv,我有一个数据库查询,可以输出我需要的数据,但我不确定如何将其转换为我需要的格式,我还需要将其转换为csv格式,但首先需要正确地获得输出 SELECT `user_id`, `assessment_name`, `question_id`, `question_type_id`, `answer`, `created_at` FROM answer WHERE `assessment_id` = 1 虽然每次提交30行,但输出是这样的-这里仅以三行为例: 11 Three Intelligen

我有一个数据库查询,可以输出我需要的数据,但我不确定如何将其转换为我需要的格式,我还需要将其转换为csv格式,但首先需要正确地获得输出

SELECT `user_id`, `assessment_name`, `question_id`, `question_type_id`, `answer`, `created_at` FROM answer WHERE `assessment_id` = 1
虽然每次提交30行,但输出是这样的-这里仅以三行为例:

11  Three Intelligences 31  6   4   7/22/08 11:30
11  Three Intelligences 40  4   4   7/22/08 11:30
11  Three Intelligences 41  6   5   7/22/08 11:30
10  Three Intelligences 31  6   3   7/22/08 14:54
10  Three Intelligences 40  4   4   7/22/08 14:54
10  Three Intelligences 41  6   4   7/22/08 14:54
12  Three Intelligences 31  6   4   7/29/08 10:31
12  Three Intelligences 40  4   4   7/29/08 10:31
12  Three Intelligences 41  6   4   7/29/08 10:31
我需要的是重新格式化它,以便它可以用于数据分析,这意味着将每个用户名和评估名的数据放在一行中,并在

assessment_name, user_id, answer(for question 31), question_type_id(for question 31), answer(for question 40), question_type_id(for question 40), answer(for question 41), question_type_id(for question 41), created_at
Three Intelligences, 11, 6, 4, 4, 4, 6, 5, 7/22/08 11:30
Three Intelligences, 10, 6, 3, 4, 4, 6, 4, 7/22/08 14:54
Three Intelligences, 12, 6, 4, 4, 4, 6, 4, 7/29/08 10:31
这可能吗?如果是这样的话,我也假设我可以在php中实现,但是我不知道足够多的知识来理解必要的“while”循环。它甚至可能不需要生成csv文件输出。。。如果我能在页面上正确格式化,我就可以复制/粘贴这个特定项目

谢谢

-编辑- 这是我到目前为止得到的-这将生成数据的半原始输出。。。我想我需要的只是弄清楚在“while”中需要循环中的哪些循环来获得所需的输出


这就是你想要的吗:

SELECT
  `user_id`,
  `assessment_name`,
  CONCAT(
  GROUP_CONCAT(
    CONCAT(`question_type_id`, ', ', `answer`)
   SEPARATOR ', ' ), ', ', `created_at`) AS RESULT
FROM answer 
WHERE `assessment_id` = 1
GROUP BY `user_id`
ORDER BY `user_id`;
样品


请让我知道它是否适用于您

您使用什么从数据库(例如mysqli、PDO等)检索数据。?我假设你用一个php脚本连接到数据库?@Jack实际上,我刚开始用一个桌面mysql应用程序来计算我需要从数据库中获取哪些数据。这是一个一次性的需求,所以我想我只需要做一个php页面来查询数据库并显示输出。i、 例如,非常基本,不是web应用程序或任何东西的一部分,所以我做了一些阅读。。。我只是打算使用mysql和php,但我发现了一些代码可以作为mysqli使用,所以我将使用这些代码。谢谢@bernd buffen!我做了更多的搜索,也接近了这个选择,创建了,用户id,评估名称,组CONCATquestion id作为问题,组CONCATquestion类型id作为子量表,组CONCATanswer作为答案的响应,其中评估id=1,按响应分组,按响应顺序,按评估名称排序;-我要试试你的解决方案。谢谢
MariaDB []> SELECT
    ->   `user_id`,
    ->   `assessment_name`,
    ->   CONCAT(
    ->   GROUP_CONCAT(
    ->     CONCAT(`question_type_id`, ', ', `answer`)
    ->    SEPARATOR ', ' ), ', ', `created_at`) AS RESULT
    -> FROM answer
    -> -- WHERE `assessment_id` = 1
    -> GROUP BY `user_id`
    -> ORDER BY `user_id`;
+---------+---------------------+---------------------------------------------+
| user_id | assessment_name     | RESULT                                      |
+---------+---------------------+---------------------------------------------+
|      11 | Three Intelligences | 6, 4, 4, 4, 6, 5, 2016-01-01 00:00:00       |
|      12 | Three Intelligences | 6, 4, 6, 4, 6, 4, 6, 4, 2016-01-01 00:00:00 |
+---------+---------------------+---------------------------------------------+
2 rows in set (0.00 sec)

MariaDB []>