我正致力于为某人提供内容时更新积分的代码。我有一个表“点”和一列“贡献”。当我创建一个名为contrib的变量并为其赋值3
然后执行SET contributions = $contributions
时,如下所示代码就可以了:
$contributions = 3
$yesupdate = "UPDATE points SET contributions = $contributions WHERE ID =
$user_ID";
$stmt2 = $dbh->prepare($yesupdate);
$stmt2->bindParam(':WID', $yes_WID, PDO::PARAM_INT);
$stmt2->bindParam(':approved', $e = Y, PDO::PARAM_STR);
$stmt2->bindParam(':position', $row2[0]['position'], PDO::PARAM_INT);
$stmt2->execute();
然而,我不希望将点数设置为3.我希望每次添加3。所以我尝试了以下方法,但没有任何反应:
$yesupdate = "UPDATE points SET contributions = $contributions + 3 WHERE ID
= $user_ID";
$stmt2 = $dbh->prepare($yesupdate);
$stmt2->bindParam(':WID', $yes_WID, PDO::PARAM_INT);
$stmt2->bindParam(':approved', $e = Y, PDO::PARAM_STR);
$stmt2->bindParam(':position', $row2[0]['position'], PDO::PARAM_INT);
$stmt2->execute();
谁能看到我错过的东西?我是否需要像示例1中那样在示例2中设置$contributions
变量?如果是这样,当我只想让代码更新数据库中“贡献”的现有值3时,我会为该变量分配什么?
答案 0 :(得分:2)
您希望查询引用列中的当前值(而不是变量)并添加三个:
UPDATE points SET contributions = contributions + 3 WHERE ID = $user_ID
您也应该正确使用准备工作,请查看:PHP Manual: PDO::prepare
答案 1 :(得分:0)
$yesupdate = "UPDATE points SET contributions = contributions + 3 WHERE ID = $user_ID";
$stmt2 = $dbh->prepare($yesupdate);
$stmt2->bindParam(':WID', $yes_WID, PDO::PARAM_INT);
$stmt2->bindParam(':approved', $e = Y, PDO::PARAM_STR);
$stmt2->bindParam(':position', $row2[0]['position'], PDO::PARAM_INT);
$stmt2->execute();