0

我的注销功能需要更新登录列表的最新行。

这是我想出的,但是它甚至没有通过语法验证。

$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值。

我究竟做错了什么?

4

2 回答 2

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';
于 2010-03-01T07:53:45.700 回答
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 的支持,这将不起作用。我会留下这个答案以供参考。

于 2010-03-01T07:53:29.880 回答