2013-03-22 121 views
0

我有一個表,它是登錄,表有兩個屬性,userId和loginDate 我想要做什麼是當用戶登錄到我的網站是要顯示他他的最後登錄日期如何在mysql中更新值如果值不爲空

如果這是用戶第一次登錄,意味着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 



      } 
+0

使用它像下面在一份聲明中,你* *插入對數的新紀錄,或者是你* *更新存儲在日誌中的價值?我建議您創建一個表來存儲*每個單獨的登錄名*,然後使用SQL檢索上次登錄日期 – Barranka 2013-03-22 19:04:17

+0

您的選擇查詢不完整,您不會按$ userid過濾。然後關於更新,只需運行更新查詢,它應該沒問題。 – Sebas 2013-03-22 19:04:51

回答

1

事情是這樣的......

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

Documentation

你還需要使用綁定參數,以防止對SQL注入。

0

這樣的事情?而不會改變你已經做

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

順便說一句,保護自己免受SQL注入攻擊你真的應該用準備好的語句,而不是在字符串變量代換。

0
COALESCE 

是解決方案。它就像Oracle的NVL一樣。 可以使用參數

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