我试图以这种格式存储我的数据库中的日期和月份名称。我的目标是存储月份,然后计算当月的条目,然后存储计数。这是我的循环,但我无法正确格式化数组。
while ( $row = mysql_fetch_assoc($res) ) {
if ($row['Date'] != $prev_date) {
$values=array(
$row['Date'] => $count,
);
$prev_date = $row['Date'];
}
$count++;
}
print_f($values);
你可以看到我将永远覆盖我之前的数组,而我实际上并没有在数组中添加条目。我无法弄清楚如何做到这一点。我基本上试图查看每月的参赛人数。
OLD Update:目前正在学习一位评论者提到的MYSQL。我得到它时会更新。
答案 0 :(得分:2)
您可以在sql中使用group by
进行此操作,其中包括:select date, count(*) from table group by date
编辑:
如果您只需按月计算,请使用以下内容:select MONTH(dateField) as NewDate, count(*) FROM table GROUP BY NewDate
答案 1 :(得分:1)
我几乎得到了它!
$values=array();
while ( $row = mysql_fetch_assoc($res) ) {
if ($row['Date'] != $prev_date) {
$values[$row['Date']] = $count;
$prev_date = $row['Date'];
$count = 0;
}
$count++;
}
更新:需要一点帮助。
我的输出:
Array ( [9] => [10] => 999 [11] => 986 )
999应该存储在9中,986应该存储在10中。
更新:这是我的新代码,如果有人能向我展示更有效的方式,我将不胜感激。
$sql = "SELECT MONTH(AddDate) AS Date, column_name FROM table ORDER BY AddDate ASC";
$res = mysql_query($sql) or die(mysql_error());
$prev_date = null;
$values=array();
while ( $row = mysql_fetch_assoc($res) ) {
if ( $row['Date'] != $prev_date) {
$month = $row['Date'];
$sql = "SELECT count(MONTH(AddDate)) AS EntryAmount FROM `table` WHERE MONTH(AddDate)=$month ";
$countResults = mysql_query($sql) or die(mysql_error());
if( $entryAmount = mysql_fetch_array($countResults) ) {
$values[$row['Date']] = $entryAmount['EntryAmount'];
}
$prev_date = $row['Date'];
}
}
输出:
Array ( [9] => 999 [10] => 986 [11] => 264 )
答案 2 :(得分:0)
不确定我明白你要做什么。怎么样?
$values[$row['Date']]++;
答案 3 :(得分:0)
如何循环查询结果:
SELECT COUNT(MONTH(AddDate)) AS EntryAmount, MONTH(AddDate) as MonthValue FROM table GROUP BY MONTH(AddDate)