连接数据库
连接数据库
连接默认分组
在任何需要的函数中添加以下代码,或在类构造函数中添加,即可连接数据库并使该连接在类中全局可用。
$db = \Config\Database::connect();
如果上述函数的第一个参数为空,则会连接数据库配置文件中指定的默认分组。对于大多数情况,这是首选的使用方式。
框架还提供了一个便捷方法,它纯粹是上述代码的封装,使用更方便:
$db = db_connect();
可用参数
\Config\Database::connect($group = null, bool $getShared = true): BaseConnection
$group:数据库分组名称,必须与配置类的属性名一致。默认值为Config\\Database::$defaultGroup。$getShared:true/false(布尔值)。是否返回共享连接(参阅下文的“连接多个数据库”)。
连接特定分组
该函数的第一个参数是 可选的,用于指定配置文件中的特定数据库分组。示例如下:
要从配置文件中选择特定分组,可以这样做:
$db = \Config\Database::connect('group_name');
其中 group_name 是配置文件中定义的连接分组名称。
建立多个指向相同数据库的连接
默认情况下,connect() 方法每次都会返回同一个数据库连接实例。如需为同一个数据库建立独立的连接,请将第二个参数设为 false:
$db = \Config\Database::connect('group_name', false);
连接多个数据库
如果需要同时连接多个数据库,可以按如下方式操作:
$db1 = \Config\Database::connect('group_one');
$db2 = \Config\Database::connect('group_two');
注意:将 group_one 和 group_two 替换为实际要连接的分组名称。
备注
如果只是在同一个连接上使用不同的数据库,无需创建独立的数据库配置。可以在需要时切换到其他数据库,例如:$db->setDatabase($database2_name);。
使用自定义设置连接
可以传入数据库设置数组来代替分组名称,从而使用自定义设置建立连接。传入的数组格式必须与配置文件中定义的分组格式一致:
$custom = [
'DSN' => '',
'hostname' => 'localhost',
'username' => '',
'password' => '',
'database' => '',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => false,
'DBDebug' => true,
'charset' => 'utf8mb4',
'DBCollat' => 'utf8mb4_general_ci',
'swapPre' => '',
'encrypt' => false,
'compress' => false,
'strictOn' => false,
'failover' => [],
'port' => 3306,
];
$db = \Config\Database::connect($custom);
重新连接 / 保持连接活跃
如果在执行耗时的 PHP 任务(例如处理图像)期间超过了数据库服务器的空闲超时时间,在发送后续查询之前应考虑调用 reconnect() 方法。该方法可以从容地保持连接活跃或重新建立连接。
reconnect() 方法会通过 ping 服务器来检查连接是否仍然活跃。如果连接已断开,它将关闭并重新建立连接。
$db->reconnect();
手动关闭连接
虽然 CodeIgniter 会智能地处理数据库连接的关闭,但也可以显式地关闭连接。
$db->close();