codeigniter数据库表前缀主要在application/config/database.php中通过$db['default']['dbprefix']设置,如'dbprefix' => 'ci_';也可在代码中用$this->db->dbprefix动态获取,仅对query builder生效。

CodeIgniter 配置数据库表前缀主要在数据库配置文件中完成,操作简单、位置固定,且支持运行时动态读取。
在 database.php 中设置 dbprefix
打开 application/config/database.php 文件,找到你正在使用的数据库连接组(通常是 $db['default']),在该数组中设置 'dbprefix' 键的值即可:
- 值为字符串,末尾一般带下划线,例如
'wp_'、'ci_'、'myapp_' - 若留空(
'')或不设置,表示无前缀 - 示例配置片段:
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '123456',
'database' => 'workplatform',
'dbdriver' => 'mysqli',
'dbprefix' => 'ci_', // ← 这里就是表前缀
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
);确认 active_group 和多库场景
如果你定义了多个数据库连接(如 $db['slave']、$db['log']),需注意当前生效的是哪个组:
- 检查
$active_group = 'default';的值,确保它指向你设置了dbprefix的那个连接组 - 不同连接组可配置不同前缀,互不影响
- 例如:
$db['log']['dbprefix'] = 'log_';只影响日志库的表名生成
代码中获取和使用前缀
配置生效后,CI 会自动在查询构建器(Query Builder)中添加前缀,你也可以主动读取:
- 在控制器或模型中,先加载数据库:
$this->load->database(); - 直接访问:
echo $this->db->dbprefix;→ 输出如ci_ - 拼接表名时推荐用:
$this->db->dbprefix . 'user',比硬编码更安全 - 查询构建器自动处理:调用
$this->db->get('user')实际查的是ci_user
注意事项与常见问题
几个容易忽略但关键的点:
-
dbprefix不影响原始 SQL 查询($this->db->query("SELECT * FROM user")),只作用于 Query Builder 方法 - 若迁移旧系统,确保所有已有表名已按前缀重命名,或临时设为空再逐步调整
-
swap_pre是进阶选项,用于替换前缀(比如部署时把dev_换成prod_),日常很少用 - 修改后无需清缓存,但建议重启 CLI 或刷新页面验证是否生效











