基本上我觉得问题很简单。但找不到任何解决方法。
在登录表单中,我使用 php 查询我的数据库,该数据库通过从数据库表中选择具有这 2 个值的任何行来检查传递的用户名和密码。
问题似乎是当我登录前。
用户:mm
通过:oo
这样可行。这是正确的,因为它们在 db 表上。
但现在如果我使用
用户:MM
通过:oo
还能用吗??这不应该。因为我的数据库只有“mm”而不是“MM”的用户。我需要它来区分大写和小写,因为在其他行中我混合了大写和小写字母
您必须将列的排序规则/编码从“不区分大小写”编码更改为区分大小写的编码,例如utf8_general_cs
或latin1_general_cs
您需要使用区分大小写的编码
排序规则名称有一个约定:它们以与之关联的字符集的名称开头,通常包含语言名称,并以 _ci(不区分大小写)、_cs(区分大小写)或 _bin(二进制)。
所以使用区分大小写,例如utf8_general_cs
或latin1_general_cs
您可以使用查询更新表:
ALTER TABLE `your_table` CHARSET=latin1 COLLATE=latin1_general_cs;
在它说latin1_general_cs
的地方,cs
指定它是区分大小写的。如果您以后希望它不区分大小写,则可以使用以下查询:
ALTER TABLE `your_table` CHARSET=latin1 COLLATE=latin1_general_ci;
指定ci
它不区分大小写。