先生,我在php mysql登录时遇到问题
在我的数据库中:
username = admin
password = addbcea06efdd20f934b35e3b2111e55
第一次测试这是mysql上的查询
SELECT COUNT(`user_id`) FROM `users` WHERE `username` = 'admin' AND `password` = 'addbcea06efdd20f934b35e3b2111e55'
第一个结果是1
但是当我第二次测试时
SELECT COUNT(`user_id`) FROM `users` WHERE `username` = 'Admin' AND `password` = 'addbcea06efdd20f934b35e3b2111e55'
为什么结果保持1?这应该是0.我只将用户名更改为大写字母。 我该怎么办?
答案 0 :(得分:2)
可以通过使用binary关键字创建MySQL列来区分大小写。我怀疑这是你的问题。您可以将列修改为二进制或将查询更改为
SELECT COUNT(`user_id`) FROM `users` WHERE BINARY `username` = 'Admin' AND `password` = 'addbcea06efdd20f934b35e3b2111e55'
答案 1 :(得分:1)
MySQL以不区分大小写的方式比较数据,但数据库,表和列名称除外。这就是为什么你的第二个查询没有返回0。
答案 2 :(得分:0)
避免区分大小写问题的最佳方法是在数据操作的两个部分使用php函数strtolower():插入和查询,在这种情况下是注册和登录验证。
您可以在代码中注册插入之前添加此行:
$username = strtolower ( $username );
这将使用户名始终以小写形式存储,然后您可以在程序的登录部分执行相同操作。由于您总是会比较小写字符串,因此不会出现区分大小写的错误。