我想知道如何检查我的数据库中是否存在登录名。此时我正在使用mysql_num_rows()
,但两个小时前我意识到这对我的网站不安全,因为如果我用昵称注册:Paul 和我的朋友用昵称注册:PauL,我的网站让注册这些昵称......我不知道如何检查单词是否等于同一个单词只是不同的字母......
问问题
108 次
5 回答
1
假设您的意思是大写和小写的混合。例如, paul,Paul,PAUL,pAUL 在数据库中应视为单个名称。
然后,您应该使用此 sql 查询来检查名称是否已经存在:
SELECT * FROM table1 WHERE LOWER(table1.nickname) = LOWER('PaUl')
这会将“昵称”列中的数据转换为小写,并在执行相等检查之前将“PaUl”转换为小写。
于 2012-08-17T13:45:14.850 回答
0
SELECT whatever FROM users WHERE UCASE(username) = 'USERNAMEINUPPERCASE';
基本上,如果您使用该UCASE()
函数,则将表中的用户名(为了查询)转换为大写,然后与您想要的大写版本进行比较,使您的查询不区分大小写。
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html
于 2012-08-17T13:39:14.007 回答
0
在进行比较之前,请strtolower()
在两个变量上使用该函数
于 2012-08-17T13:39:26.490 回答
0
您可以在SELECT
查询中定义它
SELECT * FROM `table` WHERE LOWER(`Nickname`) = LOWER($nickname)
但取决于您的排序规则*_ci
是否区分大小写或_cs
区分大小写。如果你有*_ci
你没有什么可担心的。
于 2012-08-17T13:39:36.533 回答
0
首先,用户名应该是唯一的并且不区分大小写;在数据库中将用户名的字段排序规则设置为 utf8_unicode_ci 或 utf8_general_ci。
然后运行您当前的查询。
SELECT * FROM users WHERE username = '$_var'
于 2012-08-17T13:44:40.397 回答