我想知道如何检查我的数据库中是否存在登录信息。此刻我正在使用mysql_num_rows()
,但两个小时前我意识到这对我的网站来说不安全,因为如果我注册昵称:保罗和我的朋友用昵称注册:PauL,我的网站让我们注册这些昵称...我不知道如何检查单词是否等于同一个单词只是不同的字母......
答案 0 :(得分:1)
假设你的意思是大写和小写的混合。 例如,paul,Paul,PAUL,pAUL应该在数据库中视为单个名称。
然后,您应该使用此sql查询来检查名称是否已存在:
SELECT * FROM table1 WHERE LOWER(table1.nickname) = LOWER('PaUl')
这会将“nickname”列中的数据转换为小写,并在执行相等性检查之前将“PaUl”转换为lower。
答案 1 :(得分:0)
SELECT whatever FROM users WHERE UCASE(username) = 'USERNAMEINUPPERCASE';
基本上,如果你使用UCASE()
函数,你将表中的用户名转换(为了查询的目的)为大写,然后比较你想要的大写版本,使你的查询案例不敏感的。
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html
答案 2 :(得分:0)
在进行比较之前,请对两个变量使用函数strtolower()
答案 3 :(得分:0)
您可以在SELECT
查询
SELECT * FROM `table` WHERE LOWER(`Nickname`) = LOWER($nickname)
但取决于您的排序规则*_ci
表示不区分大小写,_cs
表示区分大小写。如果您有*_ci
,则无需担心。
答案 4 :(得分:0)
首先,用户名应该是唯一的,不区分大小写;将用户名的Collation字段设置为数据库中的utf8_unicode_ci或utf8_general_ci。
然后运行您当前的查询。
SELECT * FROM users WHERE username = '$_var'