如何区分SELECT查询中的大写或小写单词

时间:2013-03-17 02:13:21

标签: php mysql select

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

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

当我登录ex时,似乎是什么问题。

  

用户:mm

     

传递:oo

有效。这是正确的,因为它们在db表上。

但现在如果我使用

  

用户:MM

     

传递:oo

仍然有效?哪个不应该。因为我的数据库只有用户作为' mm'不是MM'。 我需要它来区分上部和下部 因为在其他行中我混合了上部和下部字母

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

  

来自10.1.2. Character Sets and Collations in MySQL

     

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

因此请使用区分大小写,例如utf8_general_cslatin1_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表明它不区分大小写。