PHP 和 MySql 转储文件中的非法排序规则混合

标签 php mysql collation

我写了一个 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/

相关文章:

javascript - 使用 ajax、PHP 和 Javascript 循环遍历 JSON 文件

php - 在 Codeigniter 中选择并加入同一个表

sql-server - 在 Sql server 中,获取数据库和表中列的排序规则详细信息的查询是什么

mysql - 相似字符的唯一约束违规

php - 如何从 MySql 检索信息而忽略特殊字符?

php - 在 Yii 2.0 中添加 jquery

php - 测试 PDO 错误处理 : How to Force a Database Connection Error?

mysql - 为组选择 SUM() 的 Max()

mysql - COUNT 查询中的 SUBSTRING 未按预期工作

python - 使用 SQL 索引时 SQLAlchemy 自定义排序算法