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

时间:2013-03-22 19:01:29

标签: php mysql database

我有一个登录表,该表有两个属性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 



          }

3 个答案:

答案 0 :(得分:1)

像这样......

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

Documentation

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

答案 1 :(得分:0)

这样的东西?不改变你已经完成的事情

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

顺便说一句,为了保护自己免受SQL注入攻击,你真的应该使用预处理语句而不是字符串中的变量插值。

答案 2 :(得分:0)

COALESCE

是解决方案。它就像甲骨文的NVL一样。 您可以使用参数

在预准备语句中使用它,如下所示
UPDATE
    tbl_cccustomerinfo
SET
    customerAddress = COALESCE(?,customerAddress),
    customerName =  COALESCE(?,customerName),
    description =  COALESCE(?,description)
WHERE
    contactNumber=?