PHP / MySQL SET var = var - var

时间:2015-08-11 16:27:02

标签: php mysql sql sql-update prepared-statement

我为我的网站开了一家商店,让它运转起来,但发现它缺乏正确购买商品的能力。从透视角度来看,你不要走进商店,抓住商品,买它,再拿它,买它,再拿它等等,以获得你想要的数量。你一次抓住它们。我的网站缺乏这样的功能。所以,我试图改变获取股票的代码,到目前为止还没有成功。

我尝试了以下内容:

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

但我似乎无法将数量从股票中拿走!

1 个答案:

答案 0 :(得分:1)

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

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

使用:

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