我有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和该产品密钥将保存到第三个表。
问题是如何制作已发送的产品密钥,如果第二个用户注册,则不会再发送并发送下一个密钥。
答案 0 :(得分:1)
你的问题很不清楚。您需要注册100个用户,但只有70个密钥?那么第71位用户就无法获得独一无二的用户。
否则,您可以使用uniqid()
生成这些密钥,每次调用它时都应该返回一个唯一的字符串
编辑:所以你只需要知道密钥表中的哪些密钥已被使用?要么在其中添加一个新列(类似于“used”),每次将其分配给用户时都会设置为true(也允许您轻松获取未使用的产品密钥),或者您只需删除使用表中的键
答案 1 :(得分:1)
在第三个表中添加另一列used
,默认值为0.之后,当您使用密钥时,将其更改为1.
选择要分配给用户的密钥时,只能选择used=0
的密钥。