CodeIgniter 无直接获取当前数据库名的API,需通过执行 SELECT DATABASE() 查询或检查配置数组的 database 字段;CI3 可访问 $this->db->database 属性,CI4 需用原生查询或封装辅助方法。

CodeIgniter 本身不提供直接的「获取当前数据库名」API,但可以通过访问数据库连接对象的属性或执行 SQL 查询来确认当前连接的是哪个库。
查看当前数据库名(适用于 MySQL/MariaDB)
在 CI3 或 CI4 中,只要数据库驱动支持 SELECT DATABASE(),就可以用原生查询获取:
- CI3 示例(在 Model 或 Controller 中):
<?php
$db_name = $this->db->query("SELECT DATABASE()")->row_array()['DATABASE()'];
echo $db_name;
?> - CI4 示例(使用 Query Builder 或 Raw SQL):
<?php
$db = \Config\Database::connect();
$result = $db->query("SELECT DATABASE()")->getRow();
echo $result->{'DATABASE()'};
?>
通过连接配置反推当前激活的数据库组
CI 的多数据库机制依赖于 $active_group 变量和 $db[...] 配置数组。虽然运行时无法动态读取该变量值,但你可以主动记录或检查:
- CI3:查看
application/config/database.php中$active_group = 'default';的赋值,即当前默认使用的配置组名 - CI4:配置在
app/Config/Database.php,通过Database::connect('group_name')显式指定;若未传参,默认使用'default'组 - 建议在调试时打印对应组的
database字段:
echo $db['default']['database'] ?? '未配置';
区分多个已加载的数据库连接实例
当你像这样加载了多个连接(如 $this->db 和 $this->DB2),可通过对象属性判断其来源:
- CI3 中,
$this->db是默认组,$this->DB2是你手动加载的指定组(如$this->load->database('another_db', TRUE)) - 可临时输出连接的主机与库名:
var_dump($this->db->hostname, $this->db->database);
var_dump($this->DB2->hostname, $this->DB2->database); - 注意:
hostname和database是公开属性(CI3),CI4 中需通过$db->getPlatform()+ 手动查配置或执行 SQL 确认
CI4 推荐方式:封装一个调试方法
在自定义 Model 或服务类中加一个辅助方法,避免重复写 SQL:
-
public function getCurrentDbName(): string
{
$db = \Config\Database::connect();
$row = $db->query("SELECT DATABASE()")->getRow();
return $row ? $row->{'DATABASE()'} : 'unknown';
} - 调用:
$this->getCurrentDbName()即可返回当前连接的实际数据库名


















