0

我有 3 张桌子。

第一张表是USERS,第二张表是PRODUCT KEY,第三张表是PRODUCT KEY和USER的join。

看起来像这样:

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 和该产品密钥将保存到第三个表中。

问题是如何使已发送的产品密钥不再发送,而是在第二个用户注册时发送下一个。

4

2 回答 2

1

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

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

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

于 2013-01-10T15:50:56.923 回答
1

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

当您选择要分配给用户的键时,仅选择带有 的键used=0

于 2013-01-10T15:52:36.053 回答