我几天来一直在努力解决这个问题而且找不到合适的解决方案。
我想通过PHP从这个数据库表中检索数据:
并且,再次使用php,有一个类似于此的JSON输出:
[{
"label": "2013-01-07",
"value": "4"
}, {
"label": "2013-01-06",
"value": "65"
}, {
"label": "2013-01-05",
"value": "96"
}]
我编写了一个从表格中检索信息的函数,但是我无法按照正确的顺序排列这些信息,而且可能有更好的方法来执行此操作。
function getUsersCountOnDate()
{
$result = mysql_query("Select FROM_UNIXTIME(regtime, '%Y-%m-%d') as date, count(FROM_UNIXTIME(regtime, '%Y-%m-%d')) as count from users group by FROM_UNIXTIME(regtime, '%Y-%m-%d') order by FROM_UNIXTIME(regtime, '%Y-%m-%d') DESC");
while($row = mysql_fetch_array($result)){
$date[] = $row['date'];
}
$result = mysql_query("Select FROM_UNIXTIME(regtime, '%Y-%m-%d') as date, count(FROM_UNIXTIME(regtime, '%Y-%m-%d')) as count from users group by FROM_UNIXTIME(regtime, '%Y-%m-%d') order by FROM_UNIXTIME(regtime, '%Y-%m-%d') DESC");
while($row = mysql_fetch_array($result)){
$count[] = $row['count'];
}
$merged = array_merge($date, $count);
return json_encode($merged);
}
我检索的是这样的: [" 2016年3月18日"" 2016年3月13日"" 2016年3月11日"" 2016年3月6日&# 34;," 2016年3月4日"" 6"" 1"" 1"" 1&#34 ;," 1"]
有人可以帮我吗?
答案 0 :(得分:3)
首先,使用PDO或mysqli函数进行数据库查询。
array_merge()
将第一个数组放在第二个数组之前。例如:
$array1 = array('red', 'yellow');
$array2 = array('blue', 'green');
$arrayMerged = array_merge($array1, $array2);
$arrayMerged is now array(red,yellow,blue,green);
由于您执行的查询是相同的,您可以这样做:
$result = mysql_query("Select FROM_UNIXTIME(regtime, '%Y-%m-%d') as date, count(FROM_UNIXTIME(regtime, '%Y-%m-%d')) as count from users group by FROM_UNIXTIME(regtime, '%Y-%m-%d') order by FROM_UNIXTIME(regtime, '%Y-%m-%d') DESC");
$i = 0;
while($row = mysql_fetch_array($result)){
$date[$i][label] = $row['date'];
$date[$i][value] = $row['count'];
$i++;
}
$newArray = json_encode($date);
答案 1 :(得分:2)
尝试
echo json_encode($merged);
回归自我有时不够。 例如,如果你想在ajax调用上接收json,就必须回显它。
另外,你应该看看PDO而不是使用普通的旧mysql函数。
答案 2 :(得分:0)
请像这样使用:
function getUsersCountOnDate()
{
$result = mysql_query("Select FROM_UNIXTIME(regtime, '%Y-%m-%d') as date, count(FROM_UNIXTIME(regtime, '%Y-%m-%d')) as count from users group by FROM_UNIXTIME(regtime, '%Y-%m-%d') order by FROM_UNIXTIME(regtime, '%Y-%m-%d') DESC");
while($row = mysql_fetch_array($result)){
$dates[] = $row['date'];
}
$result = mysql_query("Select FROM_UNIXTIME(regtime, '%Y-%m-%d') as date, count(FROM_UNIXTIME(regtime, '%Y-%m-%d')) as count from users group by FROM_UNIXTIME(regtime, '%Y-%m-%d') order by FROM_UNIXTIME(regtime, '%Y-%m-%d') DESC");
while($row = mysql_fetch_array($result)){
$count[] = $row['count'];
}
$dates = array("2013-01-07", "2013-01-06", "2013-01-05");
$count = array("4", "65", "96");
$i = 0;
foreach ($dates as $date)
{
$newArray[$i]['label'] = $date;
$newArray[$i]['value'] = $count[$i];
$i++;
}
///print_r($newArray);
return json_encode($newArray);
}