MySQL CONCAT:如果超出大小,如何在字符串末尾添加数据并在开头删除数据?

时间:2012-02-28 14:13:03

标签: php mysql concat

不幸的是我还没有找到任何东西,也许有人可以帮助我或给我一个提示?

我有一个名为“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."';"; ?>

非常感谢你!

2 个答案:

答案 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