书签功能需先执行select等返回结果的查询才在结果页底部显示入口;变量必须用/[variable]/格式(大写、无空格);书签绑定创建时的数据库且依赖pma__bookmark表配置。
可以直接保存带参数的查询,但必须手动触发执行——书签本身不自动运行,也不支持变量预填充。
书签功能在哪找、怎么新建
在 phpMyAdmin 的「SQL」标签页底部,找到「书签」区域。点击「新建书签」按钮即可打开编辑面板。注意:这个功能依赖数据库中的 pma__bookmark 表(旧版叫 phpmyadmin.bookmark),如果提示“未启用书签功能”,说明该表不存在或未在配置中启用 $cfg['Servers'][$i]['bookmarktable']。
- 填写「标签」作为书签名称,比如
user_active_list - 在「SQL 查询语句」框里粘贴完整 SQL,例如:
SELECT * FROM users WHERE status = 'active' AND created_at > DATE_SUB(NOW(), INTERVAL 7 DAY); - 勾选「让所有人可用」仅当使用共享安装且有对应权限时才有效;单机环境通常不需勾选
带参数的书签怎么写、为什么不能自动填值
phpMyAdmin 书签支持用 {username} 这样的占位符,但它不会弹窗或自动提示输入,而是把占位符原样传给 MySQL 执行——结果就是报错 Unknown column 'username' in 'where clause'。真正起作用的方式是:执行前手动替换占位符为实际值。
- 正确写法示例:
SELECT * FROM logs WHERE user_id = {uid} AND level = '{level}'; - 执行时,先点书签名加载到 SQL 编辑区,再手动把
{uid}换成123,{level}换成'error',再点「执行」 - 不要指望它像 Laravel 的 Query Builder 那样做参数绑定——这里没有预处理,纯文本替换
书签和「历史记录」「SQL 窗口」的区别
三者容易混淆,但用途完全不同:「历史记录」只存最近执行过的语句,关页面就丢;「SQL 窗口」只是临时编辑区;而书签是持久化存在服务端数据库里的 SQL 片段,跨会话、跨浏览器都可用。
- 书签内容修改后,所有已登录用户立刻可见(如果设为共享)
- 删除书签不会影响原表数据,只删记录行
- 导出书签靠的是导出
pma__bookmark表本身,不是通过 phpMyAdmin 的「导出」菜单
书签最实用的场景其实是固定条件组合的报表查询,比如按月统计订单数、查某类错误日志。别试图用它替代应用层的参数化查询,也别依赖它做安全过滤——所有内容都未经校验直接拼入 SQL,手误输错引号或漏转义,执行时就直接报错。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











