2

基本上我觉得问题很简单。但找不到任何解决方法。

在登录表单中,我使用 php 查询我的数据库,该数据库通过从数据库表中选择具有这 2 个值的任何行来检查传递的用户名和密码。

问题似乎是当我登录前。

用户:mm

通过:oo

这样可行。这是正确的,因为它们在 db 表上。

但现在如果我使用

用户:MM

通过:oo

还能用吗??这不应该。因为我的数据库只有“mm”而不是“MM”的用户。我需要它来区分大写和小写,因为在其他行中我混合了大写和小写字母

4

3 回答 3

5

您必须将列的排序规则/编码从“不区分大小写”编码更改为区分大小写的编码,例如utf8_general_cslatin1_general_cs

于 2013-03-17T02:14:19.570 回答
1

您需要使用区分大小写的编码

10.1.2 开始。MySQL 中的字符集和排序规则

排序规则名称有一个约定:它们以与之关联的字符集的名称开头,通常包含语言名称,并以 _ci(不区分大小写)、_cs(区分大小写)或 _bin(二进制)。

所以使用区分大小写,例如utf8_general_cslatin1_general_cs

于 2013-03-17T03:30:44.747 回答
1

您可以使用查询更新表:

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它不区分大小写。

于 2013-03-17T03:40:30.007 回答