2011-11-15 25 views
0

我有一列A;我希望能够让A[0]列包含最新值,A[1]以包含最新值等等。这可能吗?如果没有,还有其他选择吗?MySQL中的动态列?

+0

你应该存储散列和盐渍密码,最好使用bcrypt。它应该**永远**不可能读取用户的密码。 – SLaks

回答

3

我不确定MySQL是否可以将数组存储在列中。你可能会用password_history表更好,这种结构:

password_history 
---------------- 
password 
user_id 
sequence_number 
password_history_id 

password,没错,是密码! user_id是此记录密码所属用户的ID。 sequence_number告诉你这是哪个密码。从第一个密码开始,每当他们更改密码时增加它。如果你更喜欢那个,你也可以存储创建密码的日期,而不是序列号。 password_history_id只是一个关键列,但你也可以不使用它,并将主键与其他三个组合(无论如何,这些组合总是唯一的)。

+0

这是关系数据库的目标。如果您打算保留密码的历史记录,请为其提供一个表格。 – xordon

0

这不是在SQL中建模数据的正确方法。相反,您可以创建一个PASSWORDs表,每行包含一个密码和它被替换的日期。没有更换日期的是当前的。

当然,你不应该在数据库中存储明文密码。

+0

我不认为OP实际上表示他们将密码存储为明文... – FrustratedWithFormsDesigner

+0

这是真的。但如果他们*是*,他们不应该。我敢打赌他们是,因为哈希的历史并不是那么有用(尽管我猜它可能在某些情况下)。 –

+0

曾见过那些登录系统,告诉您新密码无效,因为您在过去的* n *个月中已经使用了一次。 – FrustratedWithFormsDesigner