PHP/MySQL 设置变量 = 变量 - 变量

PHP/MySQL SET var = var - var

我为我的网站开了一家商店,并开始运作,但我意识到它无法正常购买商品。换句话说,您不会走进一家商店,拿起一件商品,购买它,再次购买,购买,再次购买,等等,以获得尽可能多的商品。你一次抓住他们。我的网站缺少这样的功能。因此,我尝试更改获取股票的代码,但到目前为止没有成功。

我试过以下方法:

function takestock($id, $count) { 
global $mysqli,$db_table_prefix; 
$stmt = $mysqli->prepare("UPDATE ".$db_table_prefix."shop 
    SET stock = stock - ?
    WHERE 
    id = ?"); 
$stmt->bind_param("ii", $id, $count); 
$result = $stmt->execute(); 
$stmt->close();     
return $result;}

function takestock($id, $count) { 
global $mysqli,$db_table_prefix; 
$stmt = $mysqli->prepare("UPDATE ".$db_table_prefix."shop 
    SET stock = stock - $count
    WHERE 
    id = ?"); 
$stmt->bind_param("ii", $id, $count); 
$result = $stmt->execute(); 
$stmt->close();     
return $result;}

function takestock($id, $count) { 
global $mysqli,$db_table_prefix; 
$stmt = $mysqli->prepare("UPDATE ".$db_table_prefix."shop 
    SET stock = stock - ".$count."
    WHERE 
    id = ?"); 
$stmt->bind_param("ii", $id, $count); 
$result = $stmt->execute(); 
$stmt->close();     
return $result;}

但我似乎无法从库存中剔除数量!

您绑定参数的顺序应与您希望在 SQL 语句中使用它们的顺序相对应。在这里,项目计数应该排在第一位,然后是 id。即,替换以下行:

$stmt->bind_param("ii", $id, $count); 

与:

$stmt->bind_param("ii", $count, $id);