2016-07-06 26 views
0

下面是一个MySQL查询:哪个MySQL整理与PHP的字符串比较完全匹配?

SELECT last_name FROM users ORDER BY last_name 

我们得到的所有数据到PHP,然后运行:

$prior = NULL; 
do { 
    $current = array_shift($results); 
    assert($current >= $prior); 
    $prior = $current; 
} while ($current !== NULL); 

目前这一论断对于某些输入失败。是否可以在上面的MySQL查询中添加COLLATE子句以绝对保证PHP断言?


的东西,我试过:

  • 上面的代码,它不会对某些非ASCII输入
  • ORDER BY email COLLATE utf8_bin导致COLLATION 'utf8_bin' is not valid for CHARACTER SET 'latin1'
  • 工作,也许这是What is the best collation to use for MySQL with PHP?重复,但这似乎更主观,我正在寻求一个具体问题的具体答案

其他注意事项:

+0

你在哪里设置'$ next'? – cmorrissey

+0

您可以通过电子邮件发送COLLATE'latin1_bin''命令,或者您可以将列的排序规则设置为'utf8',但不能通过查询中的其他子集进行排序。 – cmorrissey

+1

2016年你有没有使用'latin1'专栏的原因?这看起来过于严格。 – tadman

回答

1
echo ('a' == 'A') ? 'a==A ' : 'a <> A '; 
echo ('a' == 'á') ? 'a==á ' : 'a <> á '; 

两个回来<>,所以我推断PHP的行为类似latin1_bin(或您拥有的任何字符集的_bin)。