CodeIgniter可通过配置autoload.php自动加载数据库,将'database'加入$autoload['libraries']数组,并确保database.php配置正确;启用后所有组件可直接使用$this->db,无需手动加载,但需避免重复调用导致冲突。

CodeIgniter 默认支持自动加载数据库连接,只需在配置中启用并确保加载时机正确,无需每次手动调用 $this->load->database()。
配置自动加载项
打开 application/config/autoload.php,找到 $autoload['libraries'] 数组,把 'database' 加进去:
- 如果还没加载过其他库,直接写成:
$autoload['libraries'] = array('database'); - 如果已加载了其他库(比如 form_validation),追加即可:
$autoload['libraries'] = array('database', 'form_validation');
保存后,所有控制器、模型、视图(只要经过 CI 核心加载流程)都会自动拥有 $this->db 实例。
确认数据库配置有效
自动加载依赖 application/config/database.php 中的配置是否完整且可连通:
- 检查
$active_group是否指向一个已定义的组名(如'default') - 确认
$db['default']数组中必填项齐全:hostname、username、password、database、dbdriver - 开发环境建议开启
db_debug => TRUE,便于快速暴露连接失败原因
避免重复加载或冲突
自动加载后,不要再在控制器里重复执行 $this->load->database(),否则可能触发警告或覆盖连接实例:
- 若需切换数据库组(如临时连日志库),可用
$this->load->database('log', TRUE)返回新实例,不干扰默认连接 - 若在模型中需要独立连接,也应显式传参并设
TRUE,避免和自动加载的$this->db混淆 - 注意:自动加载的数据库连接会在第一次访问
$this->db时初始化,不是框架启动就立即连库
验证是否生效
在任意控制器方法中简单测试:
- 写一行
var_dump($this->db instanceof CI_DB);,返回true表示已加载成功 - 执行
echo $this->db->count_all('users');(假设表存在),能输出数字即说明连接正常 - 若报错 “Call to a member function count_all() on null”,大概率是 autoload 没配对或 database.php 有语法错误











