字符a与MySQL数据库中的A相同

时间:2012-06-27 13:17:41

标签: php mysql unicode utf-8

我想开发一个简短的url系统,就像我一样,我在数据库中遇到了问题。我无法在数据库中与a和A之间产生差异。

这是我在数据库中保存的内容:

1   aaaaaaa a   a   a   a   a   a   a   aaaaaaa 1340802562  
3   aaaaaab a   a   a   a   a   a   b   aaaaaab 1340802562  
5   aaaaaac a   a   a   a   a   a   c   aaaaaac 1340802562  
7   aaaaaad a   a   a   a   a   a   d   aaaaaad 1340802562

在id 2,我应该有aaaaaaB。这是表结构属性:

1   id  bigint(20)      UNSIGNED    Nu  None    AUTO_INCREMENT    Schimbare   Aruncă     More 
     2  combination varchar(8)  utf8_general_ci     Nu  None          Schimbare   Aruncă     More 
     3  a   varchar(2)  utf32_general_ci        Nu  None          Schimbare   Aruncă     More 
     4  b   varchar(2)  utf8_general_ci     Nu  None          Schimbare   Aruncă     More 
     5  c   varchar(2)  utf8_general_ci     Nu  None          Schimbare   Aruncă     More 
     6  d   varchar(2)  utf8_general_ci     Nu  None          Schimbare   Aruncă     More 
     7  e   varchar(2)  utf8_general_ci     Nu  None          Schimbare   Aruncă     More 
     8  f   varchar(2)  utf8_general_ci     Nu  None          Schimbare   Aruncă     More 
     9  g   varchar(2)  utf32_general_ci        Nu  None          Schimbare   Aruncă     More 
     10 url varchar(255)    utf8_general_ci     Nu  None          Schimbare   Aruncă     More 
     11 time    int(10)         Nu  None          Schimbare   Aruncă     More 
     12 status  int(10)         Nu  None          Schimbare   Aruncă     More 

这是代码:

<?php
require_once('Controller.php');

class ShortLink extends Controller {
  public $chars="aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPq1Qr2Rs3St4Tu5Uv6Vw7Wx8Xy9Yz0Z";
  public function generate() {
    $this->DBconnect();
    echo $length = strlen($this->chars);
    for($a=0;$a<$length;$a++) {
      for($b=0;$b<$length;$b++) {
        for($c=0;$c<$length;$c++) {
          for($d=0;$d<$length;$d++) {
            for($e=0;$e<$length;$e++) {
              for($f=0;$f<$length;$f++) {
                for($g=0;$g<$length;$g++) {
                  $combination = $this->chars[$a].$this->chars[$b].$this->chars[$c].$this->chars[$d].$this->chars[$e].$this->chars[$f].$this->chars[$g];
                  mysql_query("
                    INSERT INTO `short` (
                      `id`,
                      `combination`,
                      `a`,
                      `b`,
                      `c`,
                      `d`,
                      `e`,
                      `f`,
                      `g`,
                      `url`,
                      `time`,
                      `status`
                    )
                    VALUES (
                      NULL,  '".($combination)."', '".($this->chars[$a])."',  '".($this->chars[$b])."',  '".($this->chars[$c])."',  '".($this->chars[$d])."',  '".($this->chars[$e])."',  '".($this->chars[$f])."',  '".($this->chars[$g])."',  '".($combination)."',  '".(time())."',  '0');");
                }
              }
            }
          }
        }
      }
    }
    $this->DBdisconnect();
  }
}
$ShortLink = new ShortLink();
$ShortLink->generate();
?>

3 个答案:

答案 0 :(得分:11)

查看所有utf8_general_ci个? _ci部分表示排序规则不区分大小写。

http://dev.mysql.com/doc/refman/5.6/en/charset-unicode-sets.html

答案 1 :(得分:4)

“a”与“A”相同的原因是您的整理:utf8_general_ci

最后的“ci”代表“不区分大小写”。

您需要更改归类。

答案 2 :(得分:1)

相关问题