连接到您的数据库

连接到数据库

连接到默认组

您可以在任何需要的地方添加此代码行,或在您的类构造函数中添加此代码行,以使数据库在该类中全局可用。

$db = \Config\Database::connect();

如果上面的函数在第一个参数中不包含任何信息,它将连接到您的数据库配置文件中指定的默认组。对于大多数人来说,这是首选的使用方法。

存在一个便利方法,它只是上面代码行的包装器,并为了您的方便提供。

$db = db_connect();

可用参数

\Config\Database::connect($group = null, bool $getShared = true): BaseConnection

  1. $group: 数据库组名称,一个字符串,必须与配置类的属性名称匹配。默认值为 Config\Database::$defaultGroup

  2. $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_onegroup_two 更改为您要连接到的特定组名。

注意

如果您只需要在同一个连接上使用不同的数据库,则无需创建单独的数据库配置。您可以在需要时切换到不同的数据库,例如:$db->setDatabase($database2_name);

使用自定义设置连接

您可以传入一个数据库设置数组,而不是组名,以获得使用自定义设置的连接。传入的数组必须与配置文件中定义的组格式相同

$custom = [
    'DSN'      => '',
    'hostname' => 'localhost',
    'username' => '',
    'password' => '',
    'database' => '',
    'DBDriver' => 'MySQLi',
    'DBPrefix' => '',
    'pConnect' => false,
    'DBDebug'  => true,
    'charset'  => 'utf8',
    'DBCollat' => 'utf8_general_ci',
    'swapPre'  => '',
    'encrypt'  => false,
    'compress' => false,
    'strictOn' => false,
    'failover' => [],
    'port'     => 3306,
];
$db = \Config\Database::connect($custom);

重新连接/保持连接活动

如果您在进行一些繁重的 PHP 处理(例如处理图像)时,数据库服务器的空闲超时时间已超过,则应考虑使用 reconnect() 方法在发送更多查询之前 ping 服务器,这可以优雅地保持连接活动或重新建立连接。

重要

如果您使用的是 MySQLi 数据库驱动程序,则 reconnect() 方法不会 ping 服务器,而是关闭连接然后重新连接。

$db->reconnect();

手动关闭连接

虽然 CodeIgniter 会智能地处理关闭您的数据库连接,但您也可以显式地关闭连接。

$db->close();