【发布时间】:2015-03-04 14:37:02
【问题描述】:
我有一个 MySQL 列,其中包含一个问题编号 (0-165) 的 JSON 字符串作为键,问题答案(1-5 分)作为值。我需要检索所有 MySQL 列,将它们放入一个 .csv 文件中,并将 JSON 值放在单独的列中。
到目前为止,我有一个可用的 PHP 函数,它使用 fputcsv() 将我的整个 MySQL 表输出到一个 CSV 文件。这是代码:
function buildcsv(){
$start = $_POST['start'];
$end = $_POST['end'];
$result = mysql_query('SELECT fullname, institution, email, timestamp, responsesJSON
FROM `members` WHERE timestamp BETWEEN "'.$start.'" AND "'.$end.'"');
if (!$result) die('Couldn\'t fetch records');
ob_start();
$fp = fopen('php://output', 'w');
if ($fp && $result) {
while ($row = mysql_fetch_row($result)) {
fputcsv($fp, array_values($row));
}
fclose($fp);
return ob_get_clean();
}else{
$error = "Error. Either there is no data or invalid date.";
return $error;
}
}
这是代码的输出:
但是,我需要 CSV 输出类似于以下模型:
是否可以在不改变我的数据库结构的情况下做到这一点?我在 stackoverflow 上看到了将 JSON 值放入单独的列中的代码,但是我如何将它集成到我现有的检索所有其他 MySQL 列的代码中?
提前谢谢大家。
【问题讨论】:
-
您的代码易受 SQL 注入攻击;你应该阅读how to prevent them in PHP。
-
这两张截图有什么关系?
-
@RocketHazmat:第一个屏幕截图是我上面的代码输出的内容,第二个屏幕截图是我想要的输出。
-
@chakeda:将
mysql_fetch_row更改为mysql_fetch_assoc。 -
不要使用
mysql_,全部改成mysqli_。
标签: php mysql json csv fputcsv