我的注销功能需要更新登录列表的最新一行。
这是我提出的,但它甚至没有通过语法验证。
$query =
'UPDATE user_logins
SET active = 0
WHERE user_id = ' . Database::instance()->escape($this->getCurrentUserId()) . '
AND datetime = MAX(datetime) LIMIT 1';
基本上可能有30个左右,具有相同的user_id
值。我只想更新上次登录。这显然是最近的datetime
值。
我做错了什么?
答案 0 :(得分:1)
如果您的日期时间列为timestamp
或datetime
类型字段,则此操作应该有效。
$query =
'UPDATE user_logins
SET active = 0
WHERE user_id = ' . Database::instance()->escape($this->getCurrentUserId()) . '
ORDER BY datetime DESC LIMIT 0,1';
答案 1 :(得分:0)
您必须使用子查询。
$query =
'UPDATE user_logins
SET active = 0
WHERE user_id = ' . Database::instance()->escape($this->getCurrentUserId()) . '
AND datetime = (SELECT MAX(datetime) FROM user_logins WHERE user_id = '' . Database::instance()->escape($this->getCurrentUserId()) . ') LIMIT 1';
或类似的东西。
修改强> 正如评论所述,由于缺乏对MySQL的支持,这将无法工作。我将留下这个答案作为参考。