基本上我觉得问题很简单。但是找不到任何解决办法。
在登录表单中,我使用php查询我的数据库,通过从数据库表中选择具有该2个值的任何行来检查传递的用户名和密码。
当我登录ex时,似乎是什么问题。
用户:mm
传递:oo
有效。这是正确的,因为它们在db表上。
但现在如果我使用
用户:MM
传递:oo
仍然有效?哪个不应该。因为我的数据库只有用户作为' mm'不是MM'。 我需要它来区分上部和下部 因为在其他行中我混合了上部和下部字母
答案 0 :(得分:5)
您必须将列的排序规则/编码从“不区分大小写”的编码更改为区分大小写的编码,例如utf8_general_cs
或latin1_general_cs
答案 1 :(得分:1)
您需要使用区分大小写的编码
来自10.1.2. Character Sets and Collations in MySQL
排序规则名称有一个约定:它们以与它们相关联的字符集的名称开头,它们通常包含语言名称,它们以_ci(不区分大小写),_cs(区分大小写)或_bin(二进制)。
因此请使用区分大小写,例如utf8_general_cs
或latin1_general_cs
答案 2 :(得分: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
表明它不区分大小写。