我有以下查询:
$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
),它实际上不会减去,我不知道为什么。毕竟,我只是改变那个操作员。
怎么了?
答案 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或使其签名。