-1

我想知道如何检查我的数据库中是否存在登录名。此时我正在使用mysql_num_rows(),但两个小时前我意识到这对我的网站不安全,因为如果我用昵称注册:Paul 和我的朋友用昵称注册:PauL,我的网站让注册这些昵称......我不知道如何检查单词是否等于同一个单词只是不同的字母......

4

5 回答 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 回答