Php 如何更高效地获取mysql的7天计数数据到图表中

Php 如何更高效地获取mysql的7天计数数据到图表中,php,mysql,chart.js,Php,Mysql,Chart.js,我需要得到7天的“日期文本”和“数据计数”的图表。js创建一个图表 mysql表 id title create_time (unixtime int10) php 我能实现我的想法,这就是工作 但我觉得也许能更有效地做到这一点? 任何sugesst?您可以通过一系列联合的子查询来获取日期范围(即,选择日期添加(当前日期(),间隔-1天)作为日常联合选择日期添加(当前日期(),间隔-2天)等),然后根据实际的数据表左外连接。 //get 7days $now = time(); $day7

我需要得到7天的“日期文本”和“数据计数”的图表。js创建一个图表

mysql表

id
title
create_time (unixtime int10)
php

我能实现我的想法,这就是工作

但我觉得也许能更有效地做到这一点?
任何sugesst?

您可以通过一系列联合的子查询来获取日期范围(即,选择日期添加(当前日期(),间隔-1天)作为日常联合选择日期添加(当前日期(),间隔-2天)等),然后根据实际的数据表左外连接。
//get 7days
$now = time(); 
$day7 = array();
$day7_srt="";
for($i=0; $i<7; $i++){
    $d = mktime(0,0,0,date('m',$now),date('d',$now)-$i);
    $day7[$i]["d"] = date('d',$d);
    $day7[$i]["m"] = date('m',$d);
}
sort($day7);
foreach ($day7 as $key => $value) {
    $d = $value['d'];
    $m = $value['m'];
    $day7_srt .= "\"$m-$d\",";
}
$day7_srt=substr("$day7_srt",0,-1);  //"11-19","11-20","11-21".....etc

//get data count

$data_value = array();
$date_show ="";
foreach ($day7 as $key => $value) {
    $date = $value["date"];
    $sql = "SELECT COUNT( * ) FROM  `news` WHERE  FROM_UNIXTIME(  `create_time` ,  '%Y-%m-%d' ) =  '$date'";
    $r_title = $pdo->query($sql);
    $r_title = $r_title->fetch();
    $data_value[$key] = $r_title["0"];
}
foreach ($data_value as $key => $value) {
    $date_show .= "\"$value\",";
}
$date_show=substr("$date_show",0,-1);   //show "3","5","2".....etc
var lineChartData = {
            labels : ["11-19","11-20","11-21","11-22","11-23","11-24","11-25"],

            datasets : [
                {
                    label: "My Chart",
                    data : [1,2,3,4,5,7,9]  //mysql data here
                }
            ]

        }