php“updateset-where”没有抛出任何错误,但不起作用

1u4esq0p  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(223)

我的php代码(唯一相关部分):

$sql="UPDATE `posts` SET `likes`=`likes`+1 WHERE `id`='$id'";

不起作用。我试图增加一个int值,这个值默认设置为零。变量id设置正确(来自html表单的响应),insert函数在下一行中工作正常。我已经研究了几个小时,但都空手而归,我想知道是否有人可以帮助我,或指出一个可能的解决方案的正确方向我。
这是我在下一行执行的查询:

$res= $mysqli->query($sql);

$mysql是数据库连接,$sql是上面的代码段。
这是table

vs91vp4v

vs91vp4v1#

问题是 NULL 表中整数列的容差。我建议不要使用 NULL 在整数列上。对于您当前的问题,至少有两种解决方法:
使用 coalesce 选择值,或使用 0 如果为空:
更新帖子集likes=coalesce(likes,0)+1,其中id=10;
演示:http://sqlfiddle.com/#!9/54d9ae/1号
更新行,使其实际具有 0 价值观。

update posts
set likes = 0
where id = 10;

... 或者你可以把它设成 1 有了那个更新。用这种方法,你可以 where 子句并更正整个表,假设 NULL 不正确。

相关问题