UPDATE posts set votes=votes+1 where id='$id'
当值为零时,上面有效,但当i减去(当前值为0)时:
UPDATE posts set votes=votes-1 where id='$id'
发生错误。为什么会这样?
数据类型为int
答案 0 :(得分:3)
ALTER TABLE posts MODIFY votes BIGINT SIGNED DEFAULT 0;
这样的事情应该会有所帮助。
答案 1 :(得分:2)
使投票栏签名(因此取消勾选未签名的复选框)。
无符号整数列(在大多数工具中是默认值)只能包含正整数。有符号整数有一个额外的位 - (所以它们支持负值)。
答案 2 :(得分:1)
按照 Leon
的建议,首先运行查询以使投票成为已签名的列ALTER TABLE t1 MODIFY votes BIGINT SIGNED;
答案 3 :(得分:1)
你无疑拥有unsigned integral types之一。这些都具有零的最小值,因此您不能使这些类型为负。
更改代码以便不会发生这种情况或将数据类型更改为已签名的代码。
前者可以通过以下方式完成:
update posts set votes = votes - 1 where id = '$id' and votes > 0
后者有类似的东西:
alter table post modify votes int signed