如果值不为null,如何更新mysql中的值


how to update value in mysql if value is not null

我有一个表是login,该表有两个属性,userId和loginDate我想做的是当一个用户登录我的网站时,向他显示他的最后登录日期

如果这是用户第一次登录,意味着loginDate值为null,我只想插入当前日期,如果用户在我想更新日期之前已经登录。我该怎么做?到目前为止我有这个

  //..
  $userId = $_POST['the_user'];
  $query = "SELECT * 
            FROM login";
            $result = mysqli_query($db, $query); //we make the query
     if(empty($row[1]){  // THIS IS WHERE I INSERT A DATE IF THIS IS THE FIRST
                             // TIME A USER LOGS IN 
        $query = "INSERT INTO login(userId,loginDate)
                    VALUES ('$userId',CURDATE())";
        $result = mysqli_query($db, $query); //we make the query
      }
          else if{ // THIS IS WHERE I WOULD DO MY UPDATE 

          }

类似的东西。。。

INSERT INTO login (userId, loginDate) VALUES ('$userId', CURDATE())
  ON DUPLICATE KEY UPDATE loginDate = CURDATE()

文档

您还需要使用绑定参数来防止SQL注入。

类似的东西?不改变你已经完成的

else {
    mysqli_query($db, "update login set loginDate = curdate() where userId = '$userId'");
}

顺便说一句,为了保护自己免受SQL注入攻击,实际上应该使用准备好的语句,而不是字符串中的变量插值。

COALESCE

是解决方案。它类似于Oracle的NVL。您可以使用参数在准备好的语句中使用它,如下所示

UPDATE
    tbl_cccustomerinfo
SET
    customerAddress = COALESCE(?,customerAddress),
    customerName =  COALESCE(?,customerName),
    description =  COALESCE(?,description)
WHERE
    contactNumber=?