不幸的是我还没有找到任何东西,也许有人可以帮助我或给我一个提示?
我有一个名为“users”的表和一个字段“last_login”,我想在那里存储最后一次30个登录的登录日期。因此,每次用户成功登录时,都应在字符串末尾添加时间戳,因此它看起来像这样:
logdindate1; logindate2; logindate3; ...
..而logindates是具有特定大小的时间戳。但是,如果我们到达logindate31,则应删除logindate1并在最后添加logindate31。
有没有办法在MySQL查询中很容易地做到这一点,还是我必须用php检查长度?如果是的话,我需要一个SELECT,然后检查长度,剪切它然后单独更新吗?或者有更好的方法可以做到这一点吗?
我到现在为止的查询是(它没有检查长度或削减任何东西):
<?php $query = "UPDATE user SET login_date = CONCAT(login_date,'".$logindate.";') WHERE id='".$user_id."';"; ?>
非常感谢你!
答案 0 :(得分:0)
创建一个表login_history并在那里插入新的登录日期。使用JOIN检索用户的登录日期。
我强烈建议您基本了解所谓的“数据库规范化”
答案 1 :(得分:0)
$query = "UPDATE user SET login_date = RIGHT(CONCAT(login_date,'".$logindate.";', 256)) WHERE id='".$user_id."';";
假设256
是30个login_dates的长度,你+分号。见RIGHT