如何解决phpMyAdmin执行SQL时mb_strtolower()参数类型报错问题
错误具体含义
这是phpMyAdmin 5.1.x版本的已知内核bug,和你编写的SQL语法正确性无关:
phpMyAdmin在渲染查询结果页面、生成表关联特殊跳转链接时,调用mb_strtolower()函数处理字段属性参数,没有提前做非空校验,当多表关联查询返回的结果中存在同名字段、或部分字段属性为NULL时,就会传入NULL值触发类型错误。
修复方案
- 临时快速规避:执行查询时不要使用
SELECT *,显式声明需要查询的字段,避免不同关联表的同名字段返回触发解析异常。示例修改如下:
-- 第一条SQL修改示例,字段可根据实际需求调整 SELECT u.userid, u.name, a.province, a.detail, h.status FROM users u INNER JOIN address a ON u.userid=a.id INNER JOIN health_status h ON u.userid=h.uid WHERE u.userid='1634627411'
-- 第二条SQL修改示例,字段可根据实际需求调整 SELECT u.userid, u.name, f.friend, f1.add_time FROM users u INNER JOIN friends f ON u.userid=f.user INNER JOIN friends f1 ON u.userid = f1.friend WHERE f.user='1634627411'
- 永久代码修复:直接修改报错的phpMyAdmin文件
/Applications/XAMPP/xamppfiles/phpmyadmin/libraries/classes/Display/Results.php,找到第3095行调用mb_strtolower()的代码,给传入的参数加非空兜底,将参数部分替换为($参数名 ?? ''),给NULL值兜底为空字符串即可解决报错。 - 版本更换方案:可以降级到phpMyAdmin 5.0.x稳定版本,该版本不存在此bug;也可以等待官方发布修复该问题的更高版本后再升级。
内容的提问来源于stack exchange,提问作者swamper
相关产品推荐
相关产品推荐

