我有一个registration.php页面,我需要检查我的数据库中是否已有用户名,这样我就不会有2个同名的成员...
以下是我将用户信息插入数据库的方式(用户名,密码,注册日期等):
mysql_query("INSERT INTO UserDb (ID, TimeStamp, UserName, Password) VALUES ('$ipaddress', NOW(), '$user_username', '$user_password')");
如何检查“UserName”字段下的数据库“UserDb”,以确保用户的变量“$ user_username”不存在?
答案 0 :(得分:2)
您可以将UserName
设为唯一字段。如果用户名已存在,MySQL将拒绝插入新记录。
或者,您可以运行查询以搜索用户名。如果它不存在,请插入它。将此包装到一个事务中,这样您就可以确定在搜索用户之后,在添加新用户之前添加了一个具有相同名称的新用户。
答案 1 :(得分:2)
您可以将数据库中的用户名字段设为主键或唯一,这可以保证数据库中的用户名唯一性。
然后,如果您尝试插入已存在的用户名the mysql_query() function will fail, returning FALSE。
除此之外,您应始终使用简单的select语句查询数据库中是否存在用户名:
SELECT username FROM table WHERE username='$php_username_var';
答案 2 :(得分:1)
在UserName上创建一个唯一键,如果INSERT出错,请检查错误号。
答案 3 :(得分:1)
最好首先检查用户名,而不是依赖数据库通过错误告诉你 - 总是更好地明确而不是隐含功能。
此外,您可能需要考虑具有相同用户名的一个或多个现有记录的情况。
例如,如果用户注册订阅,则在几个月后取消,然后再次注册。
有时最好重新打开帐户,有时只是为了创建一个新帐户......在这种情况下,只要当前的一个用户名是活跃的,就可以使用相同的用户名进行复制。 ,其余用于历史报告目的。
事实上,如果您的结算表,便笺等中引用了旧的用户实例,则可能需要重复的行。如果您删除了该用户,则会导致报告出现问题。
建议一词 - 考虑使用用户的电子邮件地址作为用户名 - 您知道它是一个独特的字符串,为您提供默认的联系方式,并且可以在注册时进行验证。