我写了一个 PHP 脚本来收集一些我想输入数据库的数据。这包括需要输入的用户名,一些用户选择了带有倒置文本的用户名,即“uıɯpɐ”
当我在 WHERE 子句中使用该用户名时出现排序规则错误,php 是否有办法在进入数据库之前对其进行清理以避免这种情况?
#1267 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
脚本的设置方式 我别无选择,只能在 where 子句中使用用户名。
最佳答案
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
关于PHP 和 MySql 转储文件中的非法排序规则混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31173254/