Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建不带多个SQL查询的JSON对象(PHP)_Php_Mysql_Json - Fatal编程技术网

创建不带多个SQL查询的JSON对象(PHP)

创建不带多个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 "

我正在尝试使用MySQL/PHP创建这种JSON对象

[ 
{
  "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这应该是评论吗?这应该是评论吗?这应该是评论吗?这应该是评论吗?