加法作品,减法不

时间:2014-02-02 01:40:04

标签: php mysql mysqli

我有以下查询:

$stmt = $cxn->prepare("UPDATE comments SET counter = counter + 1 WHERE ? LIKE concat(path, '%')");
$stmt->bind_param('s', $path);
$stmt->execute();

其中$path类似于1/2/3/

此查询会为每个结果增加计数器罚款,但如果我将查询更改为减去(counter = counter - 1),它实际上不会减去,我不知道为什么。毕竟,我只是改变那个操作员。

怎么了?

2 个答案:

答案 0 :(得分:1)

这样做,这是我使用的方法:

SET `counter` = (`counter` - 1)

和另一种方法:

SET counter = (counter-1)

编辑:

您的WHERE子句应该更精确。

即:WHERE column=column_to_change而非WHERE ?

这是我的工作代码:

UPDATE `mytable` SET `fieldname` = (`fieldname` - 1) WHERE `some_id` = 1

答案 1 :(得分:0)

这个问题的解决方案是,因为我使用counter的无符号整数,如果计数器已经设置为0,查询将无效。

因此,您必须检查计数器是否不等于0或使其签名。