php - 哪种 MySQL 排序规则与 PHP 的字符串比较完全匹配?

标签 php mysql pdo character-encoding collation

这是一个 MySQL 查询:

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' 对于 CHARACTER SET 'latin1' 无效
  • 也许这是 What is the best collation to use for MySQL with PHP? 的重复项但这似乎更主观,我正在寻求特定问题的特定答案
<小时/>

其他说明:

最佳答案

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

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

关于php - 哪种 MySQL 排序规则与 PHP 的字符串比较完全匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38228335/

相关文章:

php - html图片自动调整div的大小

php - 在 PHP 数组中添加要键入的字符

php - 允许使用多个关键字在多个列中进行搜索

php - 具有绑定(bind)数据的 PDO queryString

php - 在 php 中使用带有表单的复选框从数据库中删除元素

php - 压缩目录中的所有文件并强制下载

mysql - 如何在像 MySQL 这样的 RDBMS 中存储双向关系?

php - 动态显示带有相应标题的表格

php - Mysql查询和条件where子句

php - 多文件网站和 PDO : Undefined variable in method call (defined in another file)