codeigniter 的 query builder 是数据库类内置功能,无需单独配置,只要正确设置 database.php 中的连接参数(如 hostname、username、dbdriver 等)并确保 $query_builder = true; 存在,即可直接使用 $this->db->select()->where() 等链式方法。

CodeIgniter 的 Active Record(现称 Query Builder)不是单独配置的模块,而是数据库类内置的功能,只要数据库驱动加载成功,它就自动可用。关键在于正确配置数据库连接,并确保 Query Builder 功能启用。
数据库配置文件位置与结构
配置文件固定位于 application/config/database.php,它是一个多维数组,支持多个连接组(如 default、test、production)。最常用的是 $db['default'] 组:
-
hostname:数据库服务器地址,如
'localhost'或 IP - username / password / database:登录凭证和目标库名
-
dbdriver:必须明确指定,如
'mysqli'、'pdo'或'sqlsrv' -
char_set 和 dbcollat:建议设为
'utf8'和'utf8_general_ci'避免中文乱码 -
db_debug:开发时设为
TRUE,生产环境建议关掉 -
autoinit:默认
TRUE,表示加载 DB 类时自动初始化连接
启用/禁用 Query Builder(Active Record)
CI3 及以后版本中,Query Builder 默认始终启用,没有开关配置项。但需注意:
- 配置文件里
$query_builder = TRUE;这行必须存在(CI3+ 自动生成模板已包含) - 该设置影响
$this->db->select()、->where()等链式方法是否可用 - 即使关闭(设为
FALSE),底层$this->db->query()仍可执行原生 SQL
在代码中加载并使用
控制器或模型中无需额外“开启” Active Record,只需确保数据库类已加载:
- 在控制器方法内:直接调用
$this->load->database(); - 在模型构造函数中(推荐):
parent::__construct(); $this->load->database(); - 之后即可使用链式操作,例如:
$this->db->select('id, name')->from('user')->where('status', 1)->limit(10)->get(); - 表名不需加前缀,系统会自动添加
dbprefix配置值(若设置了)
常见问题与验证要点
如果链式方法报错(如 “Call to undefined method”),优先检查:
- 是否漏写
$this->load->database();—— 这是最常见原因 - 配置文件中
$active_group是否指向存在的组名(如写成'defaultt'就会失败) - 驱动是否安装支持:比如用
sqlsrv却未启用 PHP 的 sqlsrv 扩展 - 执行简单查询验证连接:
var_dump($this->db->simple_query('SELECT 1'));返回TRUE表示连通











