【问题标题】:PHP & Illegal mix of collations in MySql dump filePHP & MySql 转储文件中排序规则的非法混合
【发布时间】:2015-07-01 23:24:29
【问题描述】:

我编写了一个 PHP 脚本来收集一些我想输入数据库的数据。这包括需要输入的用户名,一些用户选择了颠倒的用户名,即'uıɯpɐ'

当我在 WHERE 子句中使用该用户名时出现排序错误,php 有没有办法在进入数据库之前对其进行清理以避免这种情况?

#1267 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' 

脚本的设置方式我别无选择,只能在 where 子句中使用用户名。

【问题讨论】:

  • 不能更改数据库的文本编码吗?然后它就可以处理它了。
  • 我想到的另一个选择是不存储用户名,只存储他们的哈希编码或 ASCII 码,并且每当他们登录时,使用 cookie 来存储并显示他们的用户名。跨度>
  • 有数千个条目大多数都很好,有没有办法允许这些类型的字符,使用 SQL 查询的默认字符集?
  • @AlphaOmega 你能插入数据库但不能在 where 子句中使用吗?
  • 是的,它似乎只遇到错误,当它在插入后的后续 where 子句中使用时。

标签: php mysql collation


【解决方案1】:

uıɯpɐ 来自某人在弄乱你的脑袋。它是从各种 UTF-8 字符集中收集的字符,使 看起来像 颠倒了admin。但请注意,他使用“无点 i”(土耳其字符)来创建倒置的 i

您应该将任何需要包含任意字符的列从latin1 更改为utf8mb4。如果您仍然有整理错误,我们可以讨论还有什么需要更改的。如果没有看到导致错误的语句 SHOW CREATE TABLE 和连接参数,我无法更具体。

更多 UTF-8 提示:Trouble with UTF-8 characters; what I see is not what I stored

【讨论】:

    猜你喜欢
    • 2012-08-28
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 2012-12-13
    • 2017-10-19
    • 2019-04-10
    相关资源
    最近更新 更多