首页 > 解决方案 > 间隔日期之间的php总和数据

问题描述

我有一个工作代码,可以过滤日期范围内的数据。

我的工作代码

<?php
    //connection
    $conn = new mysqli('xxxx', 'xxxx','xxxx', 'xxxx');

    $start = date('Y-m-d', strtotime($_POST['date_start']));
    $end = date('Y-m-d', strtotime($_POST['date_end']));
    
    $output = array('error' => false, 'data' => '');

    $sql = "SELECT * FROM users WHERE cosafai='polizza' and datapratica BETWEEN '$start' AND '$end'";
    $query = $conn->query($sql);


 
    if($query->num_rows > 0){
        while($row = $query->fetch_assoc()){
 
            $output['data'] .= "
                <tr> 
                
                <td>".$row['name']."</td>
                <td>".$row['cognome']."</td>
                <td>".$row['targa']."</td>
                <td>".$row['compagniascelta']."</td>
                <td>".$row['premiopolizza']."</td>
 
                <td>".date('M d, Y', strtotime($row['datapratica']))."</td>
 

                </tr>
            ";
        }
    }
    else{
        $output['error'] = true;
    }


    echo json_encode($output);

 
?>

现在我需要在日期间隔内对特定列(Premio polizza)求和

想像

$sql = "SELECT SUM(premiopolizza) as sum FROM users WHERE cosafai='polizza' and datapratica BETWEEN '$start' AND '$end'";

但老实说,我无法管理它;)

我的最终结果应该是 最终结果

标签: phpdatesum

解决方案


由于无论如何您都在循环数据库结果,因此您可以在 while 循环中进行总结。

$sum = 0;
if($query->num_rows > 0){
    while($row = $query->fetch_assoc()){
        $sum += $row['premiopolizza'];
        $output['data'] .= "
            ...
        ";
    }
}

变量$sum是最后所有的加法$row['premiopolizza']。在我看来,不需要额外的 sql 语句。最后,您可以在输出中使用总和,例如...

$output['sum_premiopolizza'] = $sum;

推荐阅读