Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在保存到数据库之前从$POST计算(+;)值_Php_Mysql - Fatal编程技术网

Php 如何在保存到数据库之前从$POST计算(+;)值

Php 如何在保存到数据库之前从$POST计算(+;)值,php,mysql,Php,Mysql,这是我的密码 $_SESSION['poraw'] = substr(md5(time()), 0, 16); $userid= $_SESSION["userid"]; $today = date('Y-m-d'); $month = $_POST['month']; for($i = 0; $i < count($_POST['id']); $i++){ $id = $_POST['id'][$i]; $resin = $_POST['resin'][$i];

这是我的密码

$_SESSION['poraw'] = substr(md5(time()), 0, 16);
$userid= $_SESSION["userid"];
$today = date('Y-m-d');
$month = $_POST['month'];
for($i = 0; $i < count($_POST['id']); $i++){
    $id = $_POST['id'][$i];
    $resin = $_POST['resin'][$i];
    $hasil = $_POST['hasil'][$i];

    $sql="INSERT INTO po_supplier_temp (unique_code,po_customer_month,resin,qty,username)
        VALUES ('".$_SESSION['poraw']."','$month','$resin','$hasil','$userid')";
    $sql = $conn->query($sql);
}
$\u SESSION['poraw']=substr(md5(time()),0,16);
$userid=$\u会话[“userid”];
$today=日期('Y-m-d');
$month=$_POST['month'];
对于($i=0;$iquery($sql);
}
目前的结果:

如果$resin相同,我希望$hasil加上它(+),然后保存到dabatase,并在同一时间将一个名称$resin保存到数据库中

像这样:


谢谢你,你有两个选择:创建一个存储过程来处理自定义逻辑,或者将逻辑集成到你的php中

我只向您展示如何创建一个存储过程来完成您希望完成的任务。如果您需要关于如何使用存储过程的帮助,这里已经有了

--- Transact-SQL Syntax
CREATE PROCEDURE [dbo].[InsertOrUpdateMyThing]
(
   @SessionId int,
   @Month date,
   @Resin int,
   @Hasil int,
   @UserId int

)
AS
BEGIN
 SET NOCOUNT ON

 IF EXISTS(SELECT 1 FROM po_supplier_temp WHERE resin = @Resin)
 BEGIN
   UPDATE p
      SET p.resin = p.resin + 1
   FROM po_supplier_temp p
   WHERE p.resin = @Resin
 END
 ELSE
 BEGIN
    INSERT INTO po_supplier_temp (unique_code, po_customer_month, resin,qty, username)
    VALUES (@SessionId, @Month, @Resin, @Hasil, @UserId)
 END
END

编辑:如果同时传递多个值,则需要对其进行编辑,以接受包含所有必要信息的表值参数,并修改过程中的代码以处理一组数据。最好这样做,而不是多次调用此过程。

是否同时插入所有这些记录?如果没有,并且您已经有了要更新的记录……那么您需要一个更新sql查询。@misorude yes同时。那么您应该首先循环您的数据,以必要的形式对其进行聚合和汇总-使用
resin
值作为键,并在该键下汇总相应的
hasil
。然后,循环新数组并插入数据。@misorude teach me
$foo=[];对于(…){$resin=$\u POST['resin'][$i];$hasil=$\u POST['hasil'][$i];if(isset($foo[$resin]){$foo[$resin]+=$hasil;}其他{$foo[$resin]=$hasil;}变量转储($foo)-看看你得到了什么,从那里开始。