我必须使用PHP对值求和

我必须使用PHP对值求和,php,mysql,Php,Mysql,我有一个数据库表,有日期和金额列,我必须每月对其中的一些进行一次更新,所以我如何才能做到这一点 请参阅数据库表的图像: 实际上,我希望输出为 在这个月,这是总数,例如,如果我们在1月份有5个条目,那么我想要1月份所有5个条目的总和,我怎么做 select sum(total_amt) from table_name group by month(paydate) 这将返回每个月的一行以及总金额。选择日期从3月份开始的所有行 $result = mysqli_query($con,"SELEC

我有一个数据库表,有日期和金额列,我必须每月对其中的一些进行一次更新,所以我如何才能做到这一点

请参阅数据库表的图像:

实际上,我希望输出为 在这个月,这是总数,例如,如果我们在1月份有5个条目,那么我想要1月份所有5个条目的总和,我怎么做

select sum(total_amt)
from table_name 
group by month(paydate)

这将返回每个月的一行以及总金额。

选择日期从3月份开始的所有行

$result = mysqli_query($con,"SELECT * FROM table WHERE paydate LIKE '2016-03%");'
然后在你的页面中重复计数

echo "March entries: " . mysqli_num_rows($result);

确保“paydate”字段使用日期数据类型,然后可以使用

SELECT SUM(total_amt) AS Sum FROM `Table_Name` GROUP BY MONTH(paydate);

我的建议是使用php函数从时间戳中获取日期的月份,包括:

$month = date_parse($date_parse)['month'];  // 1-12
示例:假设$query具有数据库结果,其中的行包含总金额和发薪日,则可以执行以下操作:

$months_payments = array();
$current_month = '';
$payments_arr = array();
foreach ($query as $row){
       $pay_month = date_parse($row['payday'])['month'];

       if(strcmp($current_month, $pay_month)) != 0){
            $months_payments[$current_month]=$payments_arr;
            $current_month = $pay_month;
            $payments_arr = array();
        }

            $payments_arr.push($row['total_amt'])
     }
// To add the last month
$months_payments[$current_month]=$payments_arr;
$current_month = $pay_month;

排序之后,您应该只需要对每个月数组中的元素求和。如果您还想区分年份,则需要调整代码。

在问题中附上您的图片。@RaviHirani图片link@1000111事实上我不是从哪里开始的,我想我应该从日期开始计算月份,从数据库中获取与该月份相关的数据,然后进行计算。你可以使用sum和groupby进行计算。将日期视为字符串是非常滥用的。BETWEEN操作符在这里更合适,并且作为一个额外的功能,它可以被索引,这样它就不会融化并杀死您的数据库。
$month = date_parse($date_parse)['month'];  // 1-12
$months_payments = array();
$current_month = '';
$payments_arr = array();
foreach ($query as $row){
       $pay_month = date_parse($row['payday'])['month'];

       if(strcmp($current_month, $pay_month)) != 0){
            $months_payments[$current_month]=$payments_arr;
            $current_month = $pay_month;
            $payments_arr = array();
        }

            $payments_arr.push($row['total_amt'])
     }
// To add the last month
$months_payments[$current_month]=$payments_arr;
$current_month = $pay_month;