数据库配置
1.数据库配置
数据库驱动目前支持mysql,mysqli,pdo,sqlite3(php5.3以后建议用pdo或者mysqli连接mysql数据库)
数据库配置可以有多组,每组可以连接到不同的数据库。
$system['db']['xxxx']其中键xxxx就是组名称,相同的键就是一组。
可以通过:
$system['db']['active_group'] = 'xxxx';
设置默认的数据库配置组。默认的组就是$this->database()默认使用的配置。
下面给出每个驱动的数据库配置实例:
1.1 mysql驱动配置示例
mysqli驱动配置和mysql驱动配置一样,只是dbriver要设置为mysqli。
下面的这组配置组名称就是default
//mysql驱动配置示例
$system['db']['default']['dbdriver'] = "mysql";
$system['db']['default']['hostname'] = 'localhost';
$system['db']['default']['port'] = '3306';
$system['db']['default']['username'] = 'root';
$system['db']['default']['password'] = 'admin';
$system['db']['default']['database'] = 'test';
$system['db']['default']['dbprefix'] = '';
$system['db']['default']['pconnect'] = TRUE;
$system['db']['default']['db_debug'] = TRUE;
$system['db']['default']['char_set'] = 'utf8';
$system['db']['default']['dbcollat'] = 'utf8_general_ci';
$system['db']['default']['swap_pre'] = '';
$system['db']['default']['autoinit'] = TRUE;
$system['db']['default']['stricton'] = FALSE;

参数解析:

  • hostname - 数据库的主机名,通常位于本机,可以表示为 "localhost".
  • username - 需要连接到数据库的用户名.
  • password - 登陆数据库的密码.
  • database - 你需要连接的数据库名.
  • dbdriver - 数据库类型。可用的有mysql,mysqli,pdo,sqlite3。必须为小写字母。
  • dbprefix - 当运行Active Record查询时数据表的前缀.
  • pconnect - TRUE/FALSE (boolean) - 使用持续连接.
  • db_debug - TRUE/FALSE (boolean) - 显示数据库错误信息.
  • char_set - 与数据库通信时所使用的字符集。
  • dbcollat - 与数据库通信时所使用的字符规则。
  • swap_pre - 替换默认的dbprefix表前缀,该项设置对于分布式应用是非常有用的,你可以在查询中使用由最终用户定制的表前缀。
  • 注: 如果设置了 $db['default']['dbprefix'] 的值 同时也设置了 $db['default']['swap_pre'] 的值,则会将查询代码中和$db['default']['swap_pre'] 的值一致的字符替换成 $db['default']['dbprefix'] 的值,如果没有设置 $db['default']['swap_pre'] 值,就直接在数据库表名前面加上 $db['default']['dbprefix'] 值。
    比如我们这样配置:
    $db['default']['dbprefix'] = "feed_";
    $db['default']['swap_pre'] = "{PRE}";
    然后我们进行如下查询:
    $sql = "SELECT * FROM {PRE}item";
    $query = $this->db->query($sql);
    查询时{PRE}就会被替换为feed_.

  • autoinit - 当数据库类库(database library)被载入的时候是否需要自动连接数据库,如果设置为FALSE,将在首次查询前进行连接。
  • stricton - TRUE/FALSE (boolean) - 是否强制使用 "Strict Mode" 连接, 在开发程序时,使用 strict SQL 是一个好习惯。
  • port - 数据库端口号. 要使用这个值,你应该添加一行代码到数据库配置数组。
1.2 PDO驱动配置示例
下面的这组配置组名称就是pdo_mysql
/**
 * PDO mysql数据库配置示例,hostname 其实就是pdo的dsn部分,
 * 如果连接其它数据库按着pdo的dsn写法连接即可
 */
$system['db']['pdo_mysql']['dbdriver'] = "pdo";
$system['db']['pdo_mysql']['hostname'] = 'mysql:host=localhost;port=3306';
$system['db']['pdo_mysql']['username'] = 'root';
$system['db']['pdo_mysql']['password'] = 'admin';
$system['db']['pdo_mysql']['database'] = 'test';
$system['db']['pdo_mysql']['dbprefix'] = '';
$system['db']['pdo_mysql']['db_debug'] = TRUE;
$system['db']['pdo_mysql']['char_set'] = 'utf8';
$system['db']['pdo_mysql']['dbcollat'] = 'utf8_general_ci';
$system['db']['pdo_mysql']['swap_pre'] = '';
$system['db']['pdo_mysql']['autoinit'] = TRUE;
$system['db']['pdo_mysql']['stricton'] = FALSE;
1.3 SQLite3驱动配置示例 下面的这组配置组名称就是sqlite3
//sqlite3数据库配置示例
$system['db']['sqlite3']['dbdriver'] = "sqlite3";
$system['db']['sqlite3']['database'] = 'sqlite:d:/wwwroot/sdb.db';
$system['db']['sqlite3']['dbprefix'] = '';
$system['db']['sqlite3']['db_debug'] = TRUE;
$system['db']['sqlite3']['char_set'] = 'utf8';
$system['db']['sqlite3']['dbcollat'] = 'utf8_general_ci';
$system['db']['sqlite3']['swap_pre'] = '';
$system['db']['sqlite3']['autoinit'] = TRUE;
$system['db']['sqlite3']['stricton'] = FALSE;