为用户获取唯一的生成ID

时间:2011-01-12 18:13:25

标签: php uniqueidentifier

我需要为我的数据库中的每个用户提供一个唯一的密钥,因此我使用timestamp来使用microtime详细信息,然后在该字符串中添加由uniqid生成的id,以便获得唯一密钥。我遇到的问题是密钥有太多字符。如果我想生成一个小ID(例如,facebook的用户ID),该怎么办?还请告诉我8个字符的密钥是否足以唯一地标识我的用户。

如果没有,您能建议另一种方法来生成唯一标识符吗?

你能告诉我这个方法有没有问题吗?

我知道这似乎是重复的,但我有特定的需求,因此这个问题。

4 个答案:

答案 0 :(得分:2)

在数据库中创建一个名为user_id的字段,并将其设置为AUTO_INCREMENT。 SQL会自动为每个用户分配一个唯一的编号,您可以使用SELECT查询来调用它。

答案 1 :(得分:0)

图莎尔,

如果没有标点符号,这个问题难以理解。

您使用的是什么RDBMS?请记住,某些类型的字符长度最长。

有一种简单的方法可以为主键生成唯一ID。 MySQL的自动增量是一种流行的技术。 Oracle的序列是另一个。

答案 2 :(得分:0)

您可能想要使用UUID。 PHP无法原生生成这些(您需要为此下载一个类),或者您的SQL服务器可以处理这个;例如,MySQL有UUID(),MSSQL有NEWID()

此外,如果您要在前端使用此ID(例如FB如何使用它来查看配置文件),您可能想要使用递增ID。如果这样做,聪明的用户将能够简单地更改URL中的ID以访问他们想要的任何用户。

答案 3 :(得分:0)

由于您不想使用增量键,

// define this someplace, and with something other than abc...
define('SOME_SALT', 'abcdefghijkl');
$id = substr(sha1($username . SOME_SALT), 0, 8);

其中$username是帐户用户名(或帐户唯一的其他数据)。