php - 操作/格式化数据库输出

标签 php mysql csv

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

SELECT `user_id`, `assessment_name`, `question_id`, `question_type_id`, `answer`, `created_at` FROM answer WHERE `assessment_id` = 1

输出如下(尽管每次提交有 30 行 - 仅在此各放 3 行作为示例):

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

我需要的是重新格式化它,以便它可以用于数据分析,这意味着将每个 user_id、assessment_name 和created_at 的数据放入一行

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”内需要循环中的哪些循环才能获得所需的输出.

<?php
require_once '../connection.php';	

// Create connection
$conn = new mysqli(localhost, $dbuser, $dbpass, $db);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
	
	$query_responses = "SELECT `user_id`, `assessment_name`, `question_id`, `question_type_id`, `answer`, `created_at` FROM answer WHERE `assessment_id` = 1";
	$result_responses = $conn->query($query_responses);
	if ($result_responses->num_rows > 0) {
	    // output data of each row
	    while($row = $result_responses->fetch_assoc()){
	       echo $row["created_at"]. ", " .$row["assessment_name"]. ", " .$row["user_id"]. "," .$row["question_id"].  "," .$row["question_type_id"].  "," .$row["answer"].  "<br />";
	       
	    }
	} else {
	    echo "0 results";
	}
	$conn->close();
	
?>

最佳答案

这就是您要找的吗:

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`;

示例

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 []>

请告诉我它是否适合您

关于php - 操作/格式化数据库输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35944210/

相关文章:

javascript - 将数据导出到 excel/csv 时设置列宽和自动换行属性

php - 第一个表单在循环中未显示,而其他表单则显示

php - 防止在浏览器刷新和浏览器启动时输入数据

javascript - 在动态创建的 HTML 表中调用 PHP 函数

mysql - AWS RDS MySQL 如何限制对单个 EC2 实例的数据库访问

mysql - 索引的顺序重要吗?

php - 如何在 PHP 中添加用于分页的滚动条?

php - 在 Javascript 中循环遍历 php

javascript - Highcharts 在 Firefox 中不显示

r - 如何在 R 中使用 read.csv() 导入最后 100 行