我想用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件库存。