0

这是场景:我需要一种机制来更新一个值(将当前值加 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 in ...

我究竟做错了什么?

4

1 回答 1

1

首先,您使用的是单引号,这意味着不会解析变量。(查询实际上是看到$value而不是实际值)。

其次,您不需要事先知道值,以下工作正常:

$add_value = $db->prepare('UPDATE `table` SET `value` = `value` + 1 WHERE `email` = :email');
$add_value->execute(array(':email'   => $email));

数据库引擎知道适当地更新该字段。

于 2012-08-10T22:13:51.277 回答