1 教程-内容提要
1.1 CodeIgniter3.1教程——开始
1.2 加载静态内容
1.3 读取新闻条目
1.4 创建新闻条目
2 常规主题
2.1 CodeIgniter URL
2.2 控制器
2.3 保留名称
2.4 视图
2.5 模型
2.6 辅助函数
2.7 使用 CodeIgniter 类库
2.8 创建类库
2.9 使用 CodeIgniter 驱动器
2.10 创建驱动器
2.11 创建核心系统类
2.12 创建附属类
2.13 钩子 - 扩展框架核心
2.14 自动加载资源
2.15 公共函数
2.16 兼容性函数
2.17 URI 路由
2.18 错误处理
2.19 网页缓存
2.20 程序分析
2.21 以 CLI 方式运行
2.22 管理你的应用程序
2.23 处理多环境
2.24 在视图文件中使用 PHP 替代语法
2.25 安全
2.26 PHP 开发规范
3 类库参考
3.1 基准测试类
3.2 缓存驱动器
3.3 日历类
3.4 购物车类
3.5 配置类
3.6 Email 类
3.7 加密类(废弃)
3.8 加密类(新版)
3.9 文件上传类
3.10 表单验证类
3.11 FTP 类
3.12 图像处理类
3.13 输入类
3.14 Javascript 类
3.15 语言类
3.16 加载器类
3.17 迁移类
3.18 输出类
3.19 分页类
3.20 模板解析类
3.21 安全类
3.22 Session 类
3.23 HTML 表格类
3.24 引用通告类
3.25 排版类
3.26 单元测试类
3.27 URI 类
3.28 用户代理类
3.29 XML-RPC 与 XML-RPC 服务器类
3.30 Zip 编码类
4 数据库参考
4.1 数据库快速入门: 示例代码
4.2 数据库配置
4.3 连接你的数据库
4.4 查询
4.5 生成查询结果
4.6 查询辅助函数
4.7 查询构造器类
4.8 事务
4.9 数据库元数据
4.10 自定义函数调用
4.11 查询缓存
4.12 数据库工厂类
4.13 数据库工具类
4.14 数据库驱动器参考
5 辅助函数参考
5.1 数组辅助函数
5.2 验证码辅助函数
5.3 Cookie 辅助函数
5.4 日期辅助函数
5.5 目录辅助函数
5.6 下载辅助函数
5.7 邮件辅助函数
5.8 文件辅助函数
5.9 表单辅助函数
5.10 HTML 辅助函数
5.11 Inflector 辅助函数
5.12 语言辅助函数
5.13 数字辅助函数
5.14 路径辅助函数
5.15 安全辅助函数
5.16 表情辅助函数(废弃)
5.17 字符串辅助函数
5.18 文本辅助函数
5.19 排版辅助函数
5.20 URL 辅助函数
5.21 XML 辅助函数

数据库配置

2017-12-03 20:00:59
linefo
542
最后编辑:linefo 于 2017-12-03 21:07:56

数据库配置

CodeIgniter 有一个配置文件用来保存数据库配置(用户名、密码、数据库名等等),这个配置文件位于 application/config/database.php。 You can also set database connection values for specific environments by placing database.php in the respective environment config folder.

配置存放在一个多维数组里,原型如下:

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'database_name',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => TRUE,
    'db_debug' => TRUE,
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array()
);

有些数据库驱动(例如:PDO,PostgreSQL,Oracle,ODBC)可能需要提供完整的 DSN 字符串。在这种情况下,你需要使用 'dsn' 配置参数,就好像使用该驱动的 PHP 原生扩展一样。例如:

// PDO
$db['default']['dsn'] = 'pgsql:host=localhost;port=5432;dbname=database_name';

// Oracle
$db['default']['dsn'] = '//localhost/XE';

注解

如果你没有为需要 DSN 参数的驱动指定 DSN 字符串,CodeIgniter 将使用你提供的其他配置信息自动生成它。

注解

如果你提供了一个 DSN 字符串,但是缺少了某些配置(例如:数据库的字符集),如果该配置存在在其他的配置项中,CodeIgniter 将自动在 DSN 上附加上该配置。

当主数据库由于某些原因无法连接时,你还可以配置故障转移(failover)。可以像下面这样为一个连接配置故障转移:

$db['default']['failover'] = array(
        array(
            'hostname' => 'localhost1',
            'username' => '',
            'password' => '',
            'database' => '',
            'dbdriver' => 'mysqli',
            'dbprefix' => '',
            'pconnect' => TRUE,
            'db_debug' => TRUE,
            'cache_on' => FALSE,
            'cachedir' => '',
            'char_set' => 'utf8',
            'dbcollat' => 'utf8_general_ci',
            'swap_pre' => '',
            'encrypt' => FALSE,
            'compress' => FALSE,
            'stricton' => FALSE
        ),
        array(
            'hostname' => 'localhost2',
            'username' => '',
            'password' => '',
            'database' => '',
            'dbdriver' => 'mysqli',
            'dbprefix' => '',
            'pconnect' => TRUE,
            'db_debug' => TRUE,
            'cache_on' => FALSE,
            'cachedir' => '',
            'char_set' => 'utf8',
            'dbcollat' => 'utf8_general_ci',
            'swap_pre' => '',
            'encrypt' => FALSE,
            'compress' => FALSE,
            'stricton' => FALSE
        )
    );

你可以指定任意多个故障转移。

我们使用多维数组的原因是为了让你随意的存储多个连接值的设置,例如:如果你有多个环境(开发、生产、测试 等等),你能为每个环境建立独立的连接组,并在组之间进行切换。举个例子,如果要设置一个“test”环境,你可以这样做:

$db['test'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'database_name',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => TRUE,
    'db_debug' => TRUE,
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'compress' => FALSE,
    'encrypt' => FALSE,
    'stricton' => FALSE,
    'failover' => array()
);

然后,设置位于配置文件中的 $active_group 变量,告诉系统要使用“test”组:

$active_group = 'test';

注解

分组的名称“test”是任意的,你可以取任意的名字。默认情况下,主连接使用“default”这个名称。当然,您可以基于您的项目为它起一个更有意义的名字。

查询构造器

可以通过数据库配置文件里的 $query_builder 变量对 查询构造器类 进行全局的设定(启用设成 TRUE,禁用设成 FALSE,默认是 TRUE)。如果你不用这个类,那么你可以通过将这个变量值设置成 FALSE 来减少在数据库类初始化时对电脑资源的消耗。

$query_builder = TRUE;

注解

一些 CodeIgniter 的类,例如 Sessions,在执行一些函数的时候需要查询构造器的支持。

参数解释:

配置名 描述
dsn DSN 连接字符串(该字符串包含了所有的数据库配置信息)
hostname 数据库的主机名,通常位于本机,可以表示为 "localhost"
username 需要连接到数据库的用户名
password 登录数据库的密码
database 你需要连接的数据库名
dbdriver 数据库类型。如:mysql、postgres、odbc 等。必须为小写字母。
dbprefix 当使用 查询构造器 查询时,可以选择性的为表加个前缀, 它允许在一个数据库上安装多个 CodeIgniter 程序。
pconnect TRUE/FALSE (boolean) - 是否使用持续连接
db_debug TRUE/FALSE (boolean) - 是否显示数据库错误信息
cache_on TRUE/FALSE (boolean) - 是否开启数据库查询缓存, 详情请见 数据库缓存类
cachedir 数据库查询缓存目录所在的服务器绝对路径
char_set 与数据库通信时所使用的字符集
dbcollat

与数据库通信时所使用的字符规则

注解

只使用于 'mysql' 和 'mysqli' 数据库驱动

swap_pre 替换默认的 dbprefix 表前缀,该项设置对于分布式应用是非常有用的, 你可以在查询中使用由最终用户定制的表前缀。
schema 数据库模式,默认为 'public',用于 PostgreSQL 和 ODBC 驱动
encrypt

是否使用加密连接。

  • 'mysql' (deprecated), 'sqlsrv' and 'pdo/sqlsrv' drivers accept TRUE/FALSE
  • 'mysqli' and 'pdo/mysql' drivers accept an array with the following options:
  • 'ssl_key' - Path to the private key file
  • 'ssl_cert' - Path to the public key certificate file
  • 'ssl_ca' - Path to the certificate authority file
  • 'ssl_capath' - Path to a directory containing trusted CA certificats in PEM format
  • 'ssl_cipher' - List of allowed ciphers to be used for the encryption, separated by colons (':')
  • 'ssl_verify' - TRUE/FALSE; Whether to verify the server certificate or not ('mysqli' only)
compress TRUE/FALSE (boolean) - 是否使用客户端压缩协议(只用于MySQL)
stricton TRUE/FALSE (boolean) - 是否强制使用 "Strict Mode" 连接, 在开发程序时,使用 strict SQL 是一个好习惯。
port

数据库端口号,要使用这个值,你应该添加一行代码到数据库配置数组。

$db['default']['port'] = 5432;

注解

根据你使用的数据库平台(MySQL, PostgreSQL 等),并不是所有的参数都是必须的。例如,当你使用 SQLite 时,你无需指定用户名和密码,数据库名称直接是你的数据库文件的路径。以上内容假设你使用的是 MySQL 数据库。