没有不值得去解决的问题,也没有不值得去学习的技术!

在 Yii 2.0 中,使用 like 操作符查找 \ ,结果为空的分析,原因在于 MySQL 版本的官方 Bug

查看 MySQL 官方文档,参考:https://bugs.mysql.com/bug.php?id=81990 。在 MySQL 版本:5.6.31/5.7.13 中,排序规则,其值为:utf8mb4_unicode_ci 时,皆需要针对 \ 的搜索,再添加 1 根,才能够搜索出结果。此 Bug 在 MySQL 版本:8.0.18 得以修复
1、请求参数:filter[and][0][or][0][title][like]=\,生成 SQL 如下,查找结果为空。如图1
请求参数:filter[and][0][or][0][title][like]=\,生成 SQL 如下,查找结果为空
图1


`pa_plan`.`title` LIKE '%\\\\%'


2、查看表 plan 中的字段 title 的值,其中一条记录存在 \。理论上能够查询出一条记录才是。如图2
查看表 plan 中的字段 title 的值,其中一条记录存在 \。理论上能够查询出一条记录才是
图2
3、在 MySQL 客户端软件 Navicat for MySQl 中执行 SQL,4 根反斜杠,查找结果为空。如图3
在 MySQL 客户端软件 Navicat for MySQl 中执行 SQL,4 根反斜杠,查找结果为空
图3


SELECT * FROM `pa_plan` WHERE `title` LIKE '%\\\\%'


4、查看表 plan 中的字段 title 的排序规则,其值为:utf8mb4_unicode_ci。如图4
查看表 plan 中的字段 title 的排序规则,其值为:utf8mb4_unicode_ci
图4
5、执行 SQL,5 根反斜杠(添加 1 根),查询出一条记录。如图5
执行 SQL,5 根反斜杠(添加 1 根),查询出一条记录
图5


SELECT * FROM `pa_plan` WHERE `title` LIKE '%\\\\\%'


6、修改表 plan 中的字段 title 的排序规则,其值为:utf8mb4_general_ci。如图6
修改表 plan 中的字段 title 的排序规则,其值为:utf8mb4_general_ci
图6
7、执行 SQL,4 根反斜杠,查询出一条记录。如图7
执行 SQL,4 根反斜杠,查询出一条记录
图7


SELECT * FROM `pa_plan` WHERE `title` LIKE '%\\\\%'


8、查看 MySQL 官方文档,参考:https://bugs.mysql.com/bug.php?id=81990 。在 MySQL 版本:5.6.31/5.7.13 中,排序规则,其值为:utf8mb4_unicode_ci 时,皆需要针对 \ 的搜索,再添加 1 根,才能够搜索出结果。此 Bug 在 MySQL 版本:8.0.18 得以修复。如图8
查看 MySQL 官方文档,参考:https://bugs.mysql.com/bug.php?id=81990 。在 MySQL 版本:5.6.31/5.7.13 中,排序规则,其值为:utf8mb4_unicode_ci 时,皆需要针对 \ 的搜索,再添加 1 根,才能够搜索出结果。此 Bug 在 MySQL 版本:8.0.18 得以修复
图8
9、查询当前数据库版本:5.7.19。如图9
查询当前数据库版本:5.7.19
图9
10、后续确认一下能否在 Yii 2.0 中针对 like \ 的搜索生成 SQL,自动再添加 1 根 \ 。此问题,先暂缓处理。因为像其他的特殊字符的搜索是正常的。  

PHP / Laravel / Yii2 老项目维护与长期技术支持

如果你的 PHP / Laravel / Yii2 项目已经上线,但遇到原开发离职、Bug 长期无人修复、接口不稳定、性能下降、代码难以接手等问题,可以联系我做一次远程技术排查。

适合以下情况:
✅ 老旧 PHP 系统无人维护
✅ Laravel / Yii2 项目 Bug 修复
✅ 后台管理系统小功能迭代
✅ RESTful API 接口排查
✅ MySQL / Redis / Nginx 性能问题
✅ 长期远程兼职维护

可先从一次小问题开始:
✅ 线上报错排查
✅ 接口异常分析
✅ 慢查询与性能瓶颈定位
✅ 代码结构初步评估
✅ 部署环境与日志检查

如需咨询,请联系我,并注明:PHP 维护咨询

联系方式:
Telegram:@shuijingwan
微信:13980074657
邮箱:shuijingwanwq@gmail.com

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理