以下是场景:我需要一种机制来更新值(对当前值加1),该机制存储在数据库中,供登录到网站的某个用户使用。这是当前的代码:
$value = $row["value"];
$add_value = $db->prepare('UPDATE table SET value = $value + 1 WHERE email = :email');
$add_value->execute(array(':email' => $email));
但我收到的是以下错误消息: 解析错误:语法错误,意外的T_LNUMBER在......
我做错了什么?
答案 0 :(得分:1)
首先,您使用单引号,这意味着不会解析变量。 (查询实际上是$value
,而不是实际值。
其次,您不需要事先知道该值,以下工作正常:
$add_value = $db->prepare('UPDATE `table` SET `value` = `value` + 1 WHERE `email` = :email');
$add_value->execute(array(':email' => $email));
数据库引擎知道要正确更新字段。