如何使用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!我一定会试试的!