如何在sql行和文本框值php代码之间进行减法


how to subtract between sql row and textbox value php codes?

我想用sql行值减去一个文本框值,请帮助我。我想要这个结果$Qty=$Qty1-$QTY2;有什么解决方案吗?这是我的代码

            include('config.php');
            $sql = mysql_query("SELECT QTY FROM fab_inv where SUB_FABNO='".$_POST["item_code"][$i]."'");
                        $num_rows = mysql_num_rows($sql);
                        $res = $num_rows;
            $_POST['hiddenField3']=$row['QTY'];
            $QTY1 = $_POST['hiddenField3'];
            $QTY2 = $_POST["item_issue"][$i];
            $QTY = $QTY1 - ($QTY2);
            include('config.php');
            $sql="update fab_inv set  QTY=".$QTY." where SUB_FABNO='".$_POST["item_code"][$i]."' ";
            $retval = mysql_query( $sql);
            if(! $retval )
            {
            die('Could not enter data: ' . mysql_error());
            }

但它只在值前面插入带负号的文本框值,如下所示。如果行数量=50并且文本框值=30。则其插入仅-30…

您的代码容易受到sql注入攻击。您的查询结构也有一个恶劣的种族条件。有需要运行选择然后更新。您可以在一次更新中完成所有操作:

$val = (intval)$_POST['whatever field you want'];
$sql = "UPDATE yourtable SET QTY = QTY - $val WHERE ...."

现在,您正在将一个值吸入客户端,在那里进行计算,然后将新值吐回数据库。如果脚本的这个特定副本被短暂挂起,并且某个OTHER用户点击了同一个脚本,会发生什么?现在您将拥有:

client #1: $qty = 50, database qty = 50
client #1: $qty - 40 = 10; database qty = 50
client #2: $qty = 50, database qty = 50
client #2: $qty - 10 = 40, database qty = 50
client #2: update database -> qty = 40
client #1: update database -> qty = 10

哎呀。现在你已经卖出了50件商品,但仍有10件库存。