php - 在一个查询中插入多行求和

标签 php mysql foreach sum

我需要知道如何在一个查询中插入多行来求和。

我需要将表中已有的值与发票中的新值相加。

这是我的查询(MySql):

        $conn->beginTransaction();
        $sql = "INSERT INTO PRODUCTOS
        (cod, nombreProd, proveedor, existencia, comprado, compra, id_user, nombre, ref_compra, f_compra)
         VALUES ";
        $insertQuery = array();
        $insertData = array();
        foreach ($_POST['cod'] as $i => $cod) {
            $insertQuery[] = '(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
            $insertData[] = $_POST['cod'][$i];
            $insertData[] = $_POST['nombreProd'][$i];
            $insertData[] = $_POST['proveedor'][$i];
            $insertData[] = $_POST['existencia'][$i];
            $insertData[] = $_POST['comprado'][$i];
            $insertData[] = $_POST['compra1'][$i];
            $insertData[] = $_POST['id_user'];
            $insertData[] = $_POST['nombre'];
            $insertData[] = $_POST['ref_compra'];
            $insertData[] = $_POST['fecha'];
        }
        if (!empty($insertQuery)) {
            $sql .= implode(', ', $insertQuery);
            $stmt = $conn->prepare($sql);
            $stmt->execute($insertData);
        }
        $conn->commit();

我需要总结的行是“existencia”以及“comprado”中的新数据,如示例所示:

如果数据库中的“existencia”有 100 个项目,并且在新发票中“comprado”行中购买了 50 个以上的项目,我怎样才能先对“existencia”求和,然后将结果与“comprado”求和 值(value)?将新总数保存在“existencia”中

最诚挚的问候!

最佳答案

尝试改变

$insertData[] = $_POST['existencia'][$i];

$insertData[] = ($_POST['existencia'][$i] + $_POST['comprado'][$i]);

如果它们显示为字符串,请使用 intval功能。

关于php - 在一个查询中插入多行求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33576818/

相关文章:

mysql - MySQL 中的聚合函数

php - 使用 PDO 将输入数组插入 mysql

c++ - 如何在基于范围的for循环中进行初始化

node.js - 如何为嵌套在多个数组和对象中的对象显示 forEach

forEach 中的 JavaScript 三元运算符返回未定义

php - 在 Laravel 中将旧表迁移到新表

javascript - 从数据库中获取在 html 表行中创建一个新行

php - 清理阵列

c# - php str_word_count 到 c# 的端口

php - 如何避免使用空格和/或特殊字符的文件名