PHP表唯一键

时间:2013-01-10 15:46:05

标签: php database unique

我有3张桌子。

第一张桌子是USERS, 第二个表是PRODUCT KEY, 第三个表是PRODUCT KEY和USER的连接。

看起来像那样:

CREATE TABLE product_keys
(
id INT auto_increment PRIMARY KEY,
product_key VARCHAR(255)
);

CREATE TABLE users
(
id INT auto_increment PRIMARY KEY,
username VARCHAR(50),
email VARCHAR(50)
);

CREATE TABLE user_keys
(
id INT auto_increment PRIMARY KEY,
product_key VARCHAR(255) UNIQUE,
user_id INT
);

示例:产品密钥表有70个密钥。 如果第一个用户注册,他将收到一封带有产品密钥的电子邮件。然后,第一个用户ID和该产品密钥将保存到第三个表。

问题是如何制作已发送的产品密钥,如果第二个用户注册,则不会再发送并发送下一个密钥。

2 个答案:

答案 0 :(得分:1)

你的问题很不清楚。您需要注册100个用户,但只有70个密钥?那么第71位用户就无法获得独一无二的用户。

否则,您可以使用uniqid()生成这些密钥,每次调用它时都应该返回一个唯一的字符串

编辑:所以你只需要知道密钥表中的哪些密钥已被使用?要么在其中添加一个新列(类似于“used”),每次将其分配给用户时都会设置为true(也允许您轻松获取未使用的产品密钥),或者您只需删除使用表中的键

答案 1 :(得分:1)

在第三个表中添加另一列used,默认值为0.之后,当您使用密钥时,将其更改为1.

选择要分配给用户的密钥时,只能选择used=0的密钥。