如何使用PHP和MySQL检索此表的分组信息?

如何使用PHP和MySQL检索此表的分组信息?,php,mysql,Php,Mysql,我有一张像这样的桌子 Array ( [0] => Array ( [year] => 2009 [month] => 12 [qtt] => 7 ) [1] => Array ( [year] => 2010 [month] => 1 [qtt]

我有一张像这样的桌子

Array
(
    [0] => Array
        (
            [year] => 2009
            [month] => 12
            [qtt] => 7
        )

    [1] => Array
        (
            [year] => 2010
            [month] => 1
            [qtt] => 31
        )

    [2] => Array
        (
            [year] => 2010
            [month] => 2
            [qtt] => 13
        )
)

date
包含范围内的不同日期(2015-2009)。可以使用一个查询来检索这样的数据吗


这里[2015]——是有阵列的一年。[01]=>'12',[01]如果
日期
字段实际上是一个日期,则该月和本月的12篇文章数即

应该可以:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT date_format(`date`, \"%Y-%m\") as YearMonth, count(*) as cnt " .
       "FROM someTable " .
       "GROUP BY YearMonth " .
       "ORDER BY YearMonth ";

$data = array();

$result = $conn->query($sql);
if ($result->num_rows > 0) {
    $currentYear = "";
    while($row = $result->fetch_assoc()) {
        $rowYear = substr($row["YearMonth"], 0, 4);
        $rowMonth = substr($row["YearMonth"], 5, 2);
        if ($rowYear != $currentYear) {
            $currentYear = $rowYear;
            $data[$currentYear] = array();
        }
        $data[$currentYear][$rowMonth] = $row["cnt"];
    }
}

$conn->close();

print_r($data);

谢谢大家,我找到了我的问题的解决方案,以下是查询

str = "SELECT YEAR(date) AS year,MONTH(date) AS month,count(url) AS qtt  FROM news GROUP BY date_format(date,'%Y-%m');";
数组$data如下所示

Array
(
    [0] => Array
        (
            [year] => 2009
            [month] => 12
            [qtt] => 7
        )

    [1] => Array
        (
            [year] => 2010
            [month] => 1
            [qtt] => 31
        )

    [2] => Array
        (
            [year] => 2010
            [month] => 2
            [qtt] => 13
        )
)
然后我使用foreach循环转换为所需的数组

   $group = array();

    foreach ($data as $value ) {
        $group[$value['year']][$value['month']] = $value['qtt'];
    }
结果是

Array
(
    [2009] => Array
        (
            [12] => 7
        )

    [2010] => Array
        (
            [1] => 31
            [2] => 13
            [11] => 15
            [12] => 24
        )

    [2011] => Array
        (
            [9] => 22
            [10] => 31
            [11] => 15
        )

    [2012] => Array
        (
            [7] => 12
            [8] => 31
            [9] => 8
        )
)
这就是我需要的,
每个数组都以年为其名称,其中包含一个数组,该数组以月为键,以本月的SPost数为值

在第二个img中,什么是12,30,10,这些键?值是表的id?它们是该年每个月的计数12,30 10,这些行数(特定月份的新闻数--[01]1月)您永远不会从SQL查询中检索3D对象。SQL将始终返回一个平面表。但是,您可以使用PHP进行格式化以获得所需的输出。但是,我不能帮你,除非你提供一个.Thx!我一定会试试的!