0

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

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

  //..
  $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 



          }
4

3 回答 3

1

像这样的东西...

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

文档

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

于 2013-03-22T19:03:33.713 回答
0
COALESCE

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

UPDATE
    tbl_cccustomerinfo
SET
    customerAddress = COALESCE(?,customerAddress),
    customerName =  COALESCE(?,customerName),
    description =  COALESCE(?,description)
WHERE
    contactNumber=?
于 2013-09-29T20:08:35.883 回答
0

像这样的东西?在不改变你已经做过的事情的情况下

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

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

于 2013-03-22T19:05:18.527 回答