创建不带多个SQL查询的JSON对象(PHP)
我正在尝试使用MySQL/PHP创建这种JSON对象创建不带多个SQL查询的JSON对象(PHP),php,mysql,json,Php,Mysql,Json,我正在尝试使用MySQL/PHP创建这种JSON对象 [ { "hours":0 "vulnerability":867 "file":166 "virus":59 }, { "hours":1 "vulnerability":400 "file":14 "virus":40 }, ] 我正试图减少发送到服务器的查询量,因为我的数据库规模相当大。我的查询返回以下结果: 因此,在循环遍历数据时,我得到了这种JSON返回: { "hours":0 "
[
{
"hours":0
"vulnerability":867
"file":166
"virus":59
},
{
"hours":1
"vulnerability":400
"file":14
"virus":40
},
]
我正试图减少发送到服务器的查询量,因为我的数据库规模相当大。我的查询返回以下结果:
因此,在循环遍历数据时,我得到了这种JSON返回:
{
"hours":0
"vulnerability":867
},
{
"hours":0
"file":14
},
{
"hours":0
"virus":59
},
]
我希望在foreach循环中不使用多个SQL查询来创建所需的输出。完整代码如下-
$query = "SELECT hour(generated_time) as hours, subtype, count(subtype) as y from description group by subtype, hours order by hours asc, y desc";
$result = mysql_query($query) or die(mysql_error());
$output = array();
$data = array();
while ($row = mysql_fetch_assoc($result)) {
$data["time"] => $row['hours'];
$data[$row['subtype']] => $row['y'];
array_push($output, $data);
}
echo json_encode($output);
只需运行SQL查询一次,循环查询结果并将每一行放在正确的位置 大概是这样的:
$output = array();
while ($row = mysql_fetch_assoc($result)) {
$key = intval($row['hours']);
if(!isset($output[$key])){
$output[$key] = array('hours' => $key);
}
$output[$key][$row['subtype']] = intval($row['y']);
}
echo json_encode($output);
只需运行SQL查询一次,循环查询结果并将每一行放在正确的位置 大概是这样的:
$output = array();
while ($row = mysql_fetch_assoc($result)) {
$key = intval($row['hours']);
if(!isset($output[$key])){
$output[$key] = array('hours' => $key);
}
$output[$key][$row['subtype']] = intval($row['y']);
}
echo json_encode($output);
只需运行SQL查询一次,循环查询结果并将每一行放在正确的位置 大概是这样的:
$output = array();
while ($row = mysql_fetch_assoc($result)) {
$key = intval($row['hours']);
if(!isset($output[$key])){
$output[$key] = array('hours' => $key);
}
$output[$key][$row['subtype']] = intval($row['y']);
}
echo json_encode($output);
只需运行SQL查询一次,循环查询结果并将每一行放在正确的位置 大概是这样的:
$output = array();
while ($row = mysql_fetch_assoc($result)) {
$key = intval($row['hours']);
if(!isset($output[$key])){
$output[$key] = array('hours' => $key);
}
$output[$key][$row['subtype']] = intval($row['y']);
}
echo json_encode($output);
这只是一个mySQL查询。它被放入关联数组中,循环不会调用更多的mySQL查询,而是在循环中查看关联数组中的条目。它只是一个mySQL查询。它被放入关联数组中,循环不会调用更多的mySQL查询,而是在循环中查看关联数组中的条目。它只是一个mySQL查询。它被放入关联数组中,循环不会调用更多的mySQL查询,而是在循环中查看关联数组中的条目。它只是一个mySQL查询。它被放入关联数组中,循环不会调用更多的mySQL查询,而是在循环中查看关联数组中的条目。如果您提前知道所有子类型,您可以重写查询,以按照您想要的方式格式化数据:
SELECT
hour(generated_time) as hours,
SUM(subtype = "vulnerability") AS vulnerability,
SUM(subtype = "file") AS file,
SUM(subtype = "virus") AS virus
FROM
description
GROUP BY hours
如果您提前知道所有子类型,则可以重写查询以按您所需的方式格式化数据:
SELECT
hour(generated_time) as hours,
SUM(subtype = "vulnerability") AS vulnerability,
SUM(subtype = "file") AS file,
SUM(subtype = "virus") AS virus
FROM
description
GROUP BY hours
如果您提前知道所有子类型,则可以重写查询以按您所需的方式格式化数据:
SELECT
hour(generated_time) as hours,
SUM(subtype = "vulnerability") AS vulnerability,
SUM(subtype = "file") AS file,
SUM(subtype = "virus") AS virus
FROM
description
GROUP BY hours
如果您提前知道所有子类型,则可以重写查询以按您所需的方式格式化数据:
SELECT
hour(generated_time) as hours,
SUM(subtype = "vulnerability") AS vulnerability,
SUM(subtype = "file") AS file,
SUM(subtype = "virus") AS virus
FROM
description
GROUP BY hours
请不要在新应用程序中使用
mysql\u query
。如果您对输入到查询中的每一个值都不小心,那么它将被弃用,并且将从PHP的未来版本中删除。一个现代的替代品。像这样的指南概述了推荐的最佳实践。我不知道你用这些数据表示了什么,但似乎你使用的模型可能比它的价值要麻烦得多。+1塔德曼-谢谢你,这不会投入生产,这是一个个人项目,但无论如何,谢谢你,我们会研究这个。请,不要在新应用程序中使用mysql\u query
。如果您对输入到查询中的每一个值都不小心,那么它将被弃用,并且将从PHP的未来版本中删除。一个现代的替代品。像这样的指南概述了推荐的最佳实践。我不知道你用这些数据表示了什么,但似乎你使用的模型可能比它的价值要麻烦得多。+1塔德曼-谢谢你,这不会投入生产,这是一个个人项目,但无论如何,谢谢你,我们会研究这个。请,不要在新应用程序中使用mysql\u query
。如果您对输入到查询中的每一个值都不小心,那么它将被弃用,并且将从PHP的未来版本中删除。一个现代的替代品。像这样的指南概述了推荐的最佳实践。我不知道你用这些数据表示了什么,但似乎你使用的模型可能比它的价值要麻烦得多。+1塔德曼-谢谢你,这不会投入生产,这是一个个人项目,但无论如何,谢谢你,我们会研究这个。请,不要在新应用程序中使用mysql\u query
。如果您对输入到查询中的每一个值都不小心,那么它将被弃用,并且将从PHP的未来版本中删除。一个现代的替代品。像这样的指南概述了推荐的最佳实践。我真的不知道你用这些数据表示了什么,但似乎你使用的模型可能比它的价值要麻烦得多。+1塔德曼-谢谢,这不会投入生产,这是一个个人项目,但无论如何,谢谢,我们会研究这个。谢谢,但亚型是动态选择的+1对此表示感谢,但子类型是动态选择的+1对此表示感谢,但子类型是动态选择的+1对此表示感谢,但子类型是动态选择的+1这应该是评论吗?这应该是评论吗?这应该是评论吗?这应该是评论吗?