应通过启用$cfg['customcss']指向独立css文件来定制phpmyadmin错误提示样式,避免升级覆盖;使用相邻兄弟选择器限定作用域并加!important确保生效;关键词高亮需js注入span标签配合css实现。
sql错误信息为什么总是一坨黑底白字?
phpmyadmin 的 sql 错误提示(比如 mysql said: #1064 - you have an error...)默认用 <div class="error"> 包裹,样式来自 <code>./css/common.css 里的基础规则,没有背景色、边框或 padding,直接贴着表格边缘显示,肉眼难定位。这不是 bug,是 phpmyadmin 故意留白——它把样式控制权交给主题和自定义 css,但没给兜底视觉反馈。
直接改 common.css 会升级丢失,该写哪?
别碰 themes/pmahomme/css/common.css,XAMPP 或 apt 安装的 phpMyAdmin 升级时会覆盖整个 themes/ 目录。正确路径是启用 $cfg['CustomCSS'] 指向独立文件:
- 在 phpMyAdmin 根目录新建
css/custom.css(确保 Web 服务器用户可读,权限644) - 修改
config.inc.php,添加:$cfg['CustomCSS'] = 'css/custom.css'; - 重启 Web 服务(如
sudo systemctl restart apache2)并强制刷新浏览器(Ctrl+Shift+R)
.error 和 .notice 的样式怎么加才不冲突?
phpMyAdmin 把 SQL 错误、警告、成功提示都塞进 .error、.notice、.success 这几个 class,它们共用同一套 DOM 结构,但语义不同。硬写 .error { background: #ffebee; } 会连带影响其他提示,必须限定上下文:
- 只作用于 SQL 执行结果区域:
#sqlqueryform + .error, #sqlqueryform + .notice(利用相邻兄弟选择器定位) - 加
!important—— phpMyAdmin 的内联样式和 JS 动态 class(如.ajax)权重高,不加就可能被盖掉 - 补全基础视觉属性:至少设
padding、border-radius、margin-top,否则文字还是紧贴上一行
示例(粘贴进 css/custom.css):
/* SQL 错误提示 */
#sqlqueryform + .error {
background-color: #fff3f3 !important;
border-left: 4px solid #e53935 !important;
padding: 8px 12px !important;
margin-top: 8px !important;
border-radius: 4px !important;
}
/* SQL 警告提示(如无 WHERE 的 DELETE) */
#sqlqueryform + .notice {
background-color: #fff8e1 !important;
border-left: 4px solid #ffb300 !important;
padding: 8px 12px !important;
margin-top: 8px !important;
border-radius: 4px !important;
}
错误信息里关键词高亮要怎么做?
原生错误文本是纯字符串,比如 MySQL said: #1064 - You have an error in your SQL syntax...,没法用 CSS 选中“#1064”或“syntax”。必须靠 JS 注入包装标签:
- 用 Tampermonkey 脚本匹配数字错误码:
/#\d{3,4}/g,再用span.error-code包裹 - 再写一条 CSS:
span.error-code { background: #e81e25; color: white; padding: 0 4px; border-radius: 2px; } - 注意监听
#sqlqueryform的 DOM 变化——错误信息是 AJAX 插入的,不是页面初始加载就存在
关键点:不要用 :contains() 做 CSS 选择,phpMyAdmin 的错误容器里没有 td 或 tr,:has() 在这里无效;JS 是唯一可靠路径。











