我有一个登录表,该表有两个属性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
}
答案 0 :(得分:1)
像这样......
INSERT INTO login (userId, loginDate) VALUES ('$userId', CURDATE())
ON DUPLICATE KEY UPDATE loginDate = CURDATE()
您还需要使用绑定参数来防止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=?