我正在使用MySQL和PHP。在我的数据库中,我有一个名为users
的表,在users
表中有一个记录:
用户名:admin
密码:密码
在我的登录页面中,我尝试登录为(密码:密码):
我将用户名在我的数据库中存储为“admin”,全部小写。
在我的PHP身份验证页面中,我没有包含strtolower()函数。这是不是意味着,在PHP中,我提交的用户名表单字段不区分大小写?
答案 0 :(得分:11)
这不是PHP。这是您的数据库查询不区分大小写。
您可以将其中一个操作数作为二进制字符串。例如:
SELECT 'abc' LIKE 'ABC';
这将返回1
或true
。而
SELECT 'abc' LIKE BINARY 'ABC';
将返回0
或false
。
答案 1 :(得分:3)
是的,正如Randell所说,这是一个区分大小写的数据库。查看此文章,了解 Can we make MySQL to be case sensitive for SELECT queries and can we force a column in MySQL to be always lowercase? 。
答案 2 :(得分:1)
我认为在明确之前还有一段路要走......
MySQL对查询不区分大小写。 SELECT和select意思相同。
表格中的数据按原样存储,但由于您只能通过查询获取信息,因此需要仔细说明。
正如Randell所说
select 'abc' like 'ABC'
将返回TRUE(SELECT 'abc' like 'ABC'
也是如此)因为LIKE忽略大小写差异
select 'abc' like binary 'ABC'
将返回FALSE(因此SELECT 'abc' LIKE BINARY 'ABC'
将返回)因为LIKE BINARY看起来更仔细。二进制级别存在差异。
答案 3 :(得分:0)
如何知道它是用户名表单字段?
如果我没记错,在* nix中,用户名不区分大小写。您使用库来存储用户信息并进行比较吗?
答案 4 :(得分:-1)
当您登录时,我认为您应该编写查询以验证用户名和密码在您保存的表中是否相同。