我有一个表是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=?