Php 如果一个表中有四种类型的记录,如何从mysql表中获取数据

Php 如果一个表中有四种类型的记录,如何从mysql表中获取数据,php,mysql,Php,Mysql,我需要数组或类似的记录,正如我在下面提到的 第一个答复: |id | name | status | updated | |1 |John |Active |2018-04-12 | |2 |Peter |Active |2018-04-12 | |3 |Kenny |Inactive|2018-04-13 | |4 |Mike |Active |2018-04-14 | |5 |Neeth |Pending |2018-04-14 | |6

我需要数组或类似的记录,正如我在下面提到的

第一个答复:

|id   | name | status | updated   |
|1    |John  |Active  |2018-04-12 |
|2    |Peter |Active  |2018-04-12 |
|3    |Kenny |Inactive|2018-04-13 |
|4    |Mike  |Active  |2018-04-14 |
|5    |Neeth |Pending |2018-04-14 |
|6    |Kenith|Inactive|2018-04-15 |
第二个答复:

'Active' : [{
   id:1,
   name:John 
},{
   id:2,
   name:Peter 
},{
   id:4,
   name:Mike 
}],
'Inactive' : [{
   id:3,
   name:Kenny 
},{
   id:6,
   name:Neeth 
}],
'Pending' : [{
   id:5,
   name:Kenith 
}]

不能直接在查询中生成问题中所示的嵌套数组数据。 只能得到平面阵列。您必须使用PHP或任何其他服务器语言创建数组 通过循环查询结果

'2018-04-12':[{
   id:1,
   name:John 
},{
   id:2,
   name:Peter 
}],
'2018-04-13' : [{
   id:3,
   name:Kenny 
}],
'2018-04-14' : [{
   id:5,
   name:Mike 
},{
   id:5,
   name:Neeth 
},
'2018-04-15' : [{
   id:5,
   name:Kenith 
}]
创建数组的伪代码:

假设查询结果位于关联的数组$allrows中。输出数组$rslt将按照问题中输出的第一部分中的要求进行构造

关于第二个答案:

//  Assumes query result is in an associated array ```$allrows```

$rslt = array();
foreach($allrows as $rowno => $row) {
    if(!isset($rslt[$row['status']])) {
        $rslt[$row['status']] = array();
    }
    $rslt[$row['status']][] = array('id' => $row['id'],'name' => $row['name']);
}
PHP伪代码:

假设查询结果位于关联的数组$allrows中。输出数组$rslt将按照问题中输出的第二部分中的要求进行构造


因此,它不是一个代码编写服务。展示你的尝试。这是一个简单的选择和排序。您应该尝试自己编写代码。如果您有问题,请发布您尝试过的内容,并清楚解释哪些内容不起作用,然后提供。阅读请务必阅读。我需要一个sql查询来获取第一个答案/第二个答案。使用foreach和许多循环以及array_列,我可以找到相同的结果,但我需要一个查询。请帮帮我。
//  Assumes query result is in an associated array ```$allrows```

$rslt = array();
foreach($allrows as $rowno => $row) {
    if(!isset($rslt[$row['status']])) {
        $rslt[$row['status']] = array();
    }
    $rslt[$row['status']][] = array('id' => $row['id'],'name' => $row['name']);
}
SELECT
    `updated`,
    `id`,
    `name`
FROM table
ORDER BY `updated`,`id`;
//  Assumes query result is in an associated array ```$allrows```

$rslt = array();
foreach($allrows as $rowno => $row) {
    if(!isset($rslt[$row['updated']])) {
        $rslt[$row['updated']] = array();
    }
    $rslt[$row['status']][] = array('id' => $row['id'],'name' => $row['name']);
}