PHP“UPDATE SET WHERE”不会抛出任何错误但不起作用

时间:2018-04-12 02:14:59

标签: mysql null sql-update

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

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

无效。我试图增加一个默认设置为零的int。变量id已正确设置(来自html表单的响应),插入函数在下一行中完美运行。我已经研究了几个小时,但空手而归:\想知道是否有人可以帮助我或指出我正确的解决方案。

这是我在下一行执行的查询:

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

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

this is the table

1 个答案:

答案 0 :(得分:0)

问题是您的表对整数列的NULL允许值。我建议不要在整数列上使用NULL。对于您当前的问题,至少有两种方法可以解决它:

  1. 使用coalesce选择值,如果为空则使用0

    更新帖子 set likes = coalesce(likes,0)+ 1 其中id = 10;

  2. 演示:http://sqlfiddle.com/#!9/54d9ae/1

    1. 更新行,使其实际上具有0值。

      update posts
      set likes = 0
      where id = 10;
      
    2. ...或者您可以使用该更新将其设置为1。使用这种方法虽然您可以取消where子句并更正整个表,假设NULL不正确。