2010-11-21 56 views
1

我试图创建一个MySQL数据库,它将容纳我所有的用户和登录名。在MySQL数据库中的唯一值

该表包括: USER_ID 密钥 点

每个用户的USER_ID必须是唯一的,并与他们的密钥相同。点是一个整数值,我会不时编辑。现在,当我将用户接到我的网站时,我必须检查他是新用户还是旧用户。我通过查看他们的user_id是否已经存在于数据库中进行了检查,如果没有,我创建一个表格的新条目,输入他们的user_id,passkey和0作为点。所以,当我创建表格时,是否仍然必须为user_id和密钥指定唯一的名称,即使我在创建新条目之前先检查它们?

我该如何检查user_id是否已经在系统中?我想这样的: SELECT * FROM customers WHERE user_id ='test'

然后计算行数,如果它是零,我创建一个新的条目,对吧?我试图确保在我运行我的代码之前将所有的东西都保存好。谢谢。

+1

您可以直接执行'SELECT COUNT(*)...'查询,而不是返回*所有行*和*计数*您的结果。 – 2010-11-21 22:09:22

回答

1

这是一个好主意,反正标记字段UNIQUE,因为如果你在你的代码错过的东西,在DB在事情发生故障之前仍然会发现错误。我不确定为什么你想让这个密钥是唯一的,但是有两个用户拥有相同的密钥有什么问题吗?

您所查询的是好的,但我猜你并不真的需要检查时,实际用户的详细信息,所以你可以问计:

SELECT COUNT(*) FROM customers WHERE user_id='test' 

,如果返回值> 0, user_id已经存在。

+0

好,现在你可以告诉我,当我创建一个新的条目,并且我还添加了第四个参数,一个日期,如何设置第四个参数的默认值为昨天(创建条目前一天) ? – LostInTheCode 2010-11-21 22:21:52

+1

@ ShadowX360:使用'strtotime('yesterday')'在PHP中执行此操作最简单,并将时间戳值传递给数据库。 – casablanca 2010-11-21 22:24:49

1

你应该指定唯一和自动增量,这样你就可以填充NULL并且它为你做。

不过,我会担心,你应该使用用户名和口令的...

1

首先将密钥字段的默认值设置为0.然后对于user_id将其设置为auto_increment。每次添加新行时(例如新用户),这将增加一个。插入数据库时​​,您不需要检查user_id是否在系统中。

当你插入你只需要指定密钥,大概这是用户的密码。所有的字段编辑都可以在phpMyAdmin中完成,在您的tabel的Structure下。

相关问题