重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
今天小编给大家分享一下php如何查询一段时间内的数据库的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
任城网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、响应式网站等网站项目制作,到程序开发,运营维护。创新互联建站从2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站。
php查询一段时间内的数据库的方法:1、利用MySQL的“date_format”函数,在子查询中先查出当月所有订单;2、将enterdate用“date_format”函数转换为天;3、按天“group by”分组统计即可。
PHP+MySQL实现对一段时间内每天数据统计优化操作实例
在互联网项目中,对项目的数据分析必不可少。通常会统计某一段时间内每天数据总计变化趋势调整营销策略。下面来看以下案例。
案例
在电商平台中通常会有订单表,记录所有订单信息。现在我们需要统计某个月份每天订单数及销售金额数据从而绘制出如下统计图,进行数据分析。
订单表数据结构如下:
order_id | order_sn | total_price | enterdate |
---|---|---|---|
25396 | A4E610E250C2D378D7EC94179E14617F | 2306.00 | 2017-04-01 17:23:26 |
25397 | EAD217C0533455EECDDE39659ABCDAE9 | 17.90 | 2017-04-01 22:15:18 |
25398 | 032E6941DAD44F29651B53C41F6B48A0 | 163.03 | 2017-04-02 07:24:36 |
此时查询某月各天下单数,总金额应当如何做呢?
一般方法
首先最容易想到的方法,先利用 php 函数 cal_days_in_month()
获取当月天数,然后构造一个当月所有天的数组,然后在循环中查询每天的总数,构造新数组。
代码如下:
$month = '04'; $year = '2017'; $max_day = cal_days_in_month(CAL_GREGORIAN, $month, $year); //当月最后一天 //构造每天的数组 $days_arr = array(); for($i=1;$i<=$max_day;$i++){ array_push($days_arr, $i); } $return = array(); //查询 foreach ($days_arr as $val){ $min = $year.'-'.$month.'-'.$val.' 00:00:00'; $max = $year.'-'.$month.'-'.$val.' 23:59:59'; $sql = "select count(*) as total_num,sum(`total_price`) as amount from `orders` where `enterdate` >= {$min} and `enterdate` <= {$max}"; $return[] = mysqli_query($sql); } return $return;
这个sql简单,但是每次需要进行30次查询请,严重拖慢响应时间。
优化
如何使用一个sql直接查询出各天的数量总计呢?
此时需要利用 mysql 的 date_format
函数,在子查询中先查出当月所有订单,并将 enterdate 用 date_format 函数转换为 天 ,然后按天 group by
分组统计。 代码如下:
$month = '04'; $year = '2017'; $max_day = cal_days_in_month(CAL_GREGORIAN, $month, $year); //当月最后一天 $min = $year.'-'.$month.'-01 00:00:00'; $max = $year.'-'.$month.'-'.$max_day.' 23:59:59'; $sql = "select t.enterdate,count(*) as total_num,sum(t.total_price) as amount (select date_format(enterdate,'%e') as enterdate,total_price from orders where enterdate between {$min} and {$max}) t group by t.enterdate order by t.enterdate"; $return = mysqli_query($sql);
如此,将30次查询减少到1次,响应时间会大大提高。
注意:
1.由于需查询当月所有数据,在数据量过大时,不宜采取本方法。
2.为避免当天没有数据而造成的数据缺失,在查询后,理应根据需求对数据进行处理。
1、执行速度快。
2、具有很好的开放性和可扩展性。
3、PHP支持多种主流与非主流的数据库。
4、面向对象编程:PHP提供了类和对象。
5、版本更新速度快。
6、具有丰富的功能。
7、可伸缩性。
8、功能全面,包括图形处理、编码与解码、压缩文件处理、xml解析等。
以上就是“php如何查询一段时间内的数据库”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注创新互联行业资讯频道。