繁体   English   中英

我如何对不同的列求和以获得数组中的总数

[英]How do i sum different column to get total in array

我有一个如下所示的输入表单:

  <form action="payment-code.php" method="POST">
      <tbody>
      <?php  
        $query = "SELECT * FROM staffs ";
        $query_run = mysqli_query($conn, $query);
        if(mysqli_num_rows($query_run) > 0)
         {
          foreach($query_run as $row)
          {
           ?>
           <tr>
             <td>
              <?=$row['staff_id']; ?>
              <input type="hidden" name="id[]" value="<?=$row['staff_id']; ?>">
             </td>
             <td>
                <input type="text" name="salary[]">
             </td>
             <td><input type="text" name="extra_fee[]">
             </td>
             <td><input type="text" name="Bonus[]"></td>
           </tr>
             <?php
                  }
               }
              ?>
               <button type="submit" name="save_payment">Save payment</button>
           </tbody>
     </form>

填写完该表格后,我想将 3 个不同的输入值(salary、extra_fee 和 Bonus)相加得到 total_amount,如下所示:

id   salary    bonus    extra_fee    total_amount
1     120       10         20         150 
2     110       5          10         125
3     115       4          9          128
4     100       12         10         122 
5     90        10         10         110
6     123        5         10         138

我尝试了这段代码,但它不起作用。 您还有其他可以实现这一目标的想法吗?

<?php 

    if(isset($_POST['save_payment']))
    {   
      $id = $_POST['staff_id'];
      $salary = $_POST['salary'];
      $totalfee = $_POST['extra_fee'];
      $totalbonus = $_POST['Bonus'];
      $total_payment = $salary + $totalfee + $totalbonus;
            
     foreach ($staff_id as $key => $value){
    $query = "INSERT INTO payments(staff_id, payment_amount) VALUES ('".$value ."', '".$staff_id[$key]. "', '". $total_payment[$key]."')";
    $query_run = mysqli_query($conn, $query);
     }
   
    ?>

请帮助我,因为我已经为此苦苦挣扎了一段时间

您的脚本对SQL Injection Attack开放。 即使您正在逃避输入,它也不安全! 您应该始终在MYSQLI_PDO API 中使用准备好的参数化语句,而不是将用户提供的值连接到查询中。 永远不要相信任何用户输入!

所以我也解决了这个问题

然后,您需要做的就是使用$_POST['id]作为要循环的数组和该数组的键来寻址其他数组,在循环内进行计算。

<?php 

if(isset($_POST['save_payment'])) {   
            
    foreach ($_POST['id'] as $key => $val){
        // do the calc here
        $total_payment = $_POST['salary'][$key] +
                         $_POST['extra_fee'][$key] + 
                         $_POST['Bonus'][$key];

        $sql = "INSERT INTO payments (staff_id, payment_amount) VALUES (?,?)";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param('is', $_POST['id'][$key], $total_payment);
        $stmt->execute();
    }
}
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM