PHP/MySQL SET var=var-var

PHP/MySQL SET var=var-var,php,mysql,sql,sql-update,prepared-statement,Php,Mysql,Sql,Sql Update,Prepared Statement,我为我的网站开了一家商店,并让它正常工作,但我意识到它缺乏正确购买商品的能力。从长远来看,你不会走进一家商店,抓取一件商品,买它,再抓取它,买它,再抓取它,等等,为了得到你想要的数量。你一次就把它们都抓起来。我的网站缺少这样的功能。因此,我试图改变代码,采取股票,到目前为止,我没有成功 我尝试了以下方法: function takestock($id, $count) { global $mysqli,$db_table_prefix; $stmt = $mysqli->prepare

我为我的网站开了一家商店,并让它正常工作,但我意识到它缺乏正确购买商品的能力。从长远来看,你不会走进一家商店,抓取一件商品,买它,再抓取它,买它,再抓取它,等等,为了得到你想要的数量。你一次就把它们都抓起来。我的网站缺少这样的功能。因此,我试图改变代码,采取股票,到目前为止,我没有成功

我尝试了以下方法:

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;}


但我似乎无法从库存中去掉计数

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

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


那我该怎么处理SET stock=stock-?@不懒,是的,确实-只需将其保留为
SET stock=stock-?
谢谢!我马上就把你的答案标为正确。
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;}
$stmt->bind_param("ii", $id, $count); 
$stmt->bind_param("ii", $count, $id);