directory search
Array Array Helper Benchmarking Benchmarking Class Caching Caching Driver Calendaring Calendaring Class CAPTCHA CAPTCHA Helper Config Config Class Cookie Cookie Helper Database Connecting to your Database Custom Function Calls Database Caching Class Database Configuration Database Forge Class Database Metadata Database Quick Start: Example Code Database Reference Database Utility Class DB Driver Reference Generating Query Results Queries Query Builder Class Query Helper Methods Transactions Date Date Helper Directory Directory Helper Download Download Helper Email Email Class Email Helper Encrypt Encrypt Class Encryption Encryption Library File File Helper File Uploading File Uploading Class Form Form Helper Form Validation Form Validation FTP FTP Class Functions compatibility_functions common_functions HTML HTML Helper HTML Table HTML Table Class Image Manipulation Image Manipulation Class Inflector Inflector Helper Input Input Class Javascript Javascript Class Language Language Class Language Helper Loader Loader Class Migrations Migrations Class Number Number Helper Output Output Class Pagination Pagination Class Path Path Helper Security Security Class Security Helper Session Session Library Shopping Cart Shopping Cart Class Smiley Smiley Helper String String Helper Template Parser Template Parser Class Text Text Helper Trackback Trackback Class Typography Typography Class Typography Helper Unit Testing Unit Testing Class URI URL User Agent XML XML-RPC and XML-RPC Server Zip Encoding Zip Encoding Class XML-RPC and XML-RPC Server Classes XML Helper User Agent Class URL Helper URI Class
characters

有两种连接数据库的方法:

自动连接

“自动连接”功能将在每次加载页面时加载和实例化数据库类。要启用“自动连接”,请将Word数据库添加到库数组中,如下文件所示:

application/config/autooload.php

手动连接

如果只有某些页面需要数据库连接,则可以通过在需要的任何函数中添加这一行代码或在类构造函数中手动连接到数据库,从而使数据库在该类中全局可用。

$this->load->database();

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

可用参数

  • 数据库连接值,作为数组或DSN字符串传递。

  • TRUE / FALSE(布尔值)。是否返回连接ID(请参阅下面的连接到多个数据库)。

  • TRUE / FALSE(布尔值)。是否启用查询生成器类。默认设置为TRUE。

手动连接到数据库

此函数的第一个参数可以任选用于从配置文件中指定特定的数据库组,或者甚至可以为配置文件中未指定的数据库提交连接值。例子:

要从配置文件中选择特定的组,可以这样做:

$this->load->database('group_name');

所在群[医]名称是配置文件中连接组的名称。

要手动连接到所需的数据库,可以传递一个值数组:

$config['hostname'] = 'localhost';
$config['username'] = 'myusername';
$config['password'] = 'mypassword';
$config['database'] = 'mydatabase';
$config['dbdriver'] = 'mysqli';
$config['dbprefix'] = '';
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$config['cache_on'] = FALSE;
$config['cachedir'] = '';
$config['char_set'] = 'utf8';
$config['dbcollat'] = 'utf8_general_ci';
$this->load->database($config);

有关这些值中每个值的信息,请参见配置页...

对于PDO驱动程序,应该使用$config‘dsnn’设置而不是“主机名”和“数据库”:

也可以将数据库值作为数据源名称提交。DSNS必须具有以下原型:

$dsn = 'dbdriver://username:[email protected]/database';$this->load->database($dsn);

若要在与DSN字符串连接时重写默认配置值,请将配置变量添加为查询字符串。

$dsn = 'dbdriver:
//username:[email protected]/database?char_set=utf8&dbcollat=utf8_general_ci&cache_on=true&cachedir=/path/to/cache';
$this->load->database($dsn);

连接到多个数据库

如果你需要同时连接多个数据库,你可以这样做:

$DB1 = $this->load->database('group_one', TRUE);$DB2 = $this->load->database('group_two', TRUE);
  • 注意:将单词“group_one”和“group_two”更改为要连接的特定组名(或者您可以按照上面所述传递连接值)。

通过将第二个参数设置为TRUE(布尔值),该函数将返回数据库对象。

以这种方式连接时,您将使用对象名称来发布命令,而不是本指南中使用的语法。换句话说,而不是发出命令:

如果只需要在同一连接上使用不同的数据库,则不需要创建单独的数据库配置。您可以在需要时切换到不同的数据库,如下所示:

重新连接/保持连接正常

如果数据库服务器的空闲超时在您执行一些繁重的PHP提升(例如处理图像)时被超过,则应该考虑在发送进一步查询之前使用reconnect()方法对服务器执行ping操作,这可以适当地保持连接活着或重新建立它。

$this->db->reconnect();

手动关闭连接

虽然CodeIgniter智能地负责关闭数据库连接,但您可以显式关闭连接。

$this->db->close();
Previous article: Next article: