PHP:将数据库值插入不同的PHP数组

PHP:将数据库值插入不同的PHP数组,php,sql,arrays,Php,Sql,Arrays,我有两个日期选择器在我的网页“从”和“到”。用户将为每个值选择日期: FromDate: 01/JUL/2012 ToDate: 31/OCT/2014 这是我的问题: $query = mssql_query("SELECT count(startdate) as start FROM user WHERE startdate between '01 JUL 2012' and '3

我有两个日期选择器在我的网页“从”和“到”。用户将为每个值选择日期:

FromDate: 01/JUL/2012     ToDate: 31/OCT/2014
这是我的问题:

  $query = mssql_query("SELECT count(startdate) as start
                        FROM user 
                        WHERE startdate between '01 JUL 2012' and '31 OCT 2014' 
                        GROUP BY  month(startdate), year(startdate) 
                        ORDER BY  month(startdate) ASC, year(startdate) ASC");
我想计算从用户选择的日期开始的所有记录,按年份和月份进行分组,并将其存储在php数组中

示例结果:

          JUL AUG SEP OCT NOV DEC
Array2012=(“52”、“45”、“25”、“62”、“11”、“41”)

Array2013=(“52”、“45”、“25”、“35”)

Array2014=(“52”、“45”、“25”、“47”)


如何循环数据库中的值以获得这些结果?

尝试使用类似于以下代码片段的内容循环数据库查询中的返回值:

$query = mssql_query("SELECT count(startdate) as start
                    FROM user 
                    WHERE startdate between '01 JUL 2012' and '31 OCT 2014' 
                    GROUP BY  month(startdate), year(startdate) 
                    ORDER BY  month(startdate) ASC, year(startdate) ASC");
    if($query == FALSE){
        die(mysql_error());
    }
    while($row = mysql_fetch_array($query)){
        echo $row['startdate']
    }
希望我能正确理解你的意思,并能帮上忙


和平

你需要改变两件事:

  • 在选择字段中添加年份,并使用它在数组中插入结果
  • 更改订单方式:先按年份排序,然后按月份排序
结果,代码将如下所示:

$values = array();
$lastYear = 0;

$query = mssql_query("SELECT count(startdate) as start, 
                    year(startdate) AS year
                    FROM user 
                    WHERE startdate between '01 JUL 2012' and '31 OCT 2014' 
                    GROUP BY  month(startdate), year(startdate) 
                    ORDER BY  year(startdate) ASC, month(startdate) ASC");

while ($data = mssql_fetch_array($query)) {
    if ($data['year'] != $lastYear) {
        $lastYear = $data['year'];
        $values[$data['year']] = array();
    }
    array_push($values[$data['year']], $data['start']);
}

print_r($values);
$value将包含:

Array(
[2012] => Array("52","45","25","62","11","41"}),
[2013] => Array("52","45","25",......,"35"),
[2014] => Array("52","45","25",.......,"47")
)

谢谢你的回复。我尝试过这种循环,它对我很有效,但我不知道如何将值存储在不同的数组中。这是一个快速回复。。谢谢我稍后再试,并告诉你结果。。非常感谢。如何打印结果。。我试过你说的话,结果一无所获,页面是空白的。你可以使用print\r($values);要显示存储在阵列中的内容,请打印空白。。哦,我现在明白了,在array_push中,它应该是$data['start']。。谢谢
$values = array();
$lastYear = 0;

$query = mssql_query("SELECT count(startdate) as start, 
                    year(startdate) AS year
                    FROM user 
                    WHERE startdate between '01 JUL 2012' and '31 OCT 2014' 
                    GROUP BY  month(startdate), year(startdate) 
                    ORDER BY  year(startdate) ASC, month(startdate) ASC");

while ($data = mssql_fetch_array($query)) {
    if ($data['year'] != $lastYear) {
        $lastYear = $data['year'];
        $values[$data['year']] = array();
    }
    array_push($values[$data['year']], $data['start']);
}

print_r($values);
Array(
[2012] => Array("52","45","25","62","11","41"}),
[2013] => Array("52","45","25",......,"35"),
[2014] => Array("52","45","25",.......,"47")
)