这篇文章主要介绍了CodeIgniter配置之database.php用法,结合实例形式较为详细的分析总结了CodeIgniter常用的数据库连接方式,需要的朋友可以参考下

本文实例分析了CodeIgniter配置之database.php用法。分享给大家供大家参考,具体如下:

CodeIgniter的数据库配置文件位于application/config/database.php, 该文件中定义了$db的二维数组,参考文件如下:

$active_group = 'default';

$active_record = TRUE;

$db['default']['hostname'] = 'localhost';

$db['default']['username'] = 'root';

$db['default']['password'] = '123456';

$db['default']['database'] = 'test';

$db['default']['dbdriver'] = 'mysql';

$db['default']['dbprefix'] = '';

$db['default']['pconnect'] = FALSE;

$db['default']['db_debug'] = TRUE;

$db['default']['cache_on'] = FALSE;

$db['default']['cachedir'] = '';

$db['default']['char_set'] = 'utf8';

$db['default']['dbcollat'] = 'utf8_general_ci';

$db['default']['swap_pre'] = '';

$db['default']['autoinit'] = TRUE;

$db['default']['stricton'] = FALSE;

配置说明

$active_group 为$db中的一维键名,表示默认使用的数据库配置,即$this->load->database()不传入参数时,将默认使用$db[$active_group]来连接数据库。

$active_record 是否开启AR模式,开启后将可以使用AR类中的方法,该值可通过$this->load->database()的第三个参数传入。

$db数组需要注意的地方

1、port 默认只列出了主机、帐号、密码等,未配置端口号,如果需要特别指定端口号则需要配置该值。

2、pconnect 长连接的问题,值默认为TRUE表示默认使用长连接。长连接的使用需要特别小心,数据库可能会出现大量的sleep的进程而导致更多的请求执行不成功,这里不建议开启长连接。

3、db_debug 为TRUE时SQL执行出错则会直接在错误页面打印,开发环境可以打开,生产环境需关闭。

4、autoinit 是否自动初始化数据库,为true时则$this->load->database()就会连接数据库,否则在查询时连接数据库。CI的类都做了单例,所以不用担心多次链接。

5、stricton 当该值为TRUE时,初始化时会执行这样一条语句,会对不规范的数据,比如字符超过长度、自增主键传入‘'等将会直接抛错。

SET SESSION sql_mode="STRICT_ALL_TABLES"

如何连接数据库?

可通过Loader中的database方式调用,即$this->load->database(); 函数的定义如下:

/**

* Database Loader

*

* @param string 数据库连接值,数组或DSN字符串传递。

* @param bool 是否返回数据库对象,否则将数据库对象赋值给控制器的db属性

* @param bool 是否使用AR,这里的设置会覆盖database.php中设置

* @return object

*/

function database($params = '', $return = FALSE, $active_record = NULL){}

$params的值有3种情况,分别是:

1、字符串,传入$db数组一维键名,如 default test等,为空则默认$active_group定义的值

2、数组,可以直接传入类似$db的一维数组,如:

$this->load->database(array(

'hostname' => 'localhost',

'username' => 'root',

'password' => '123456',

'database' => 'test',

'dbdriver' => 'mysql',

'pconnect' => FALSE,

'db_debug' => TRUE,

'char_set' => 'utf8',

'dbcollat' => 'utf8_general_ci',

));

3、DSN 字符串,如:

$dsn = 'mysql://root:123456@localhost/test?charset=utf8&dbcollat=utf8_general_ci';

$this->load->database($dsn);

PDO的初始化需要使用DSN字符串,那么在CI中该如何配置呢,可参考如下配置:

//当前版本2.x.x

$active_group = 'default';

$active_record = TRUE;

$db['default']['hostname'] = 'mysql:host=localhost;dbname=test';

$db['default']['username'] = 'root';

$db['default']['password'] = '123456';

$db['default']['database'] = 'test';

$db['default']['dbdriver'] = 'pdo';

$db['default']['dbprefix'] = '';

$db['default']['pconnect'] = FALSE;

$db['default']['db_debug'] = TRUE;

$db['default']['cache_on'] = FALSE;

$db['default']['cachedir'] = '';

$db['default']['char_set'] = 'utf8';

$db['default']['dbcollat'] = 'utf8_general_ci';

$db['default']['swap_pre'] = '';

$db['default']['autoinit'] = TRUE;

$db['default']['stricton'] = FALSE;

如何连接多个数据库?

$this->load->database()时会将数据库对象赋值给CI_Controller的db属性,如果已经存在了db则不会重新连接。也就是执行$this->load->database()之后再次$this->load->database('test')时则第二次load不会执行。

但load的第二个参数允许返回,所以可以返回并赋值给变量,达到连不同库的目的。

$DB1 = $this->load->database('default', TRUE);

$DB2 = $this->load->database('test', TRUE);

但这种方式需要使用的时候主动去load,使用不太方便,我们可以在MY_Model的构造函数中实现,将返回的$DB1重新赋值给CI_Controller的一个属性,并将该属性赋值或者clone给$this->db,例如:

public function __construct($group_name = '')

{

parent::__construct();

if($group_name == '') {

$db_conn_name = 'db';

} else {

$db_conn_name = 'db_'.$group_name;

}

$CI = & get_instance();

if(isset($CI->{$db_conn_name}) && is_object($CI->{$db_conn_name})) {

$this->db = $CI->{$db_conn_name};

} else {

$CI->{$db_conn_name} = $this->db = $this->load->database($group_name, TRUE);

}

}

更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》和《CI(CodeIgniter)框架进阶教程》

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

config database.php,CodeIgniter配置之database.php用法实例分析相关推荐

  1. 如果要用thinkphp框架_php需要改哪些配置,thinkPHP框架动态配置用法实例分析

    本文实例讲述了thinkPHP框架动态配置用法.分享给大家供大家参考,具体如下: 最近在用@ThinkPHP 做系统的时候,要用到一个功能,就要动态的将系统的配置参数保存到Config文件中.以往,我 ...

  2. oracle 百万记录 cache,学习笔记:通过案例深入学习In-Memory Database Cache 总结配置过程...

    天萃荷净 详细记录关于In-Memory Database Cache配置方法与使用案例 一.Oracle数据库创建相关用户和权限 1.创建timesten用户 store information a ...

  3. Flowable 6.6.0表单 - 1.配置 - 1.4 数据库配置(Database configuration)

    培训视频推荐 CSDN上提供了Flowable 6.6.0的系列培训视频课程,欢迎有兴趣的朋友前往学习. <Flowable流程入门课程> <Flowable流程高级课程> & ...

  4. apache2.2.21下为codeigniter配置url地址重写

    2019独角兽企业重金招聘Python工程师标准>>> apache2.2.21下为codeigniter配置url地址重写 1.首先打开apache的配置文件,httpd.conf ...

  5. Oracle Database 11G 完全备份[Whole Database Backups]概述

    Oracle Database 11G 完全备份[Whole Database Backups]概述 RMAN 的完全备份(Whole Database Backups using RMAN) Ora ...

  6. Git config 查看和设置配置信息

    Git使用git config 指令来指定与git相关的配置 config 配置有system级别.global(用户级别).和local(当前仓库)三个级别,三个设置范围system->glo ...

  7. vue.config.js多页配置

    vue.config.js多页配置,具体看代码: "use strict"; const path = require("path"); var webpack ...

  8. 在运行时在Spring Cloud Config中刷新属性配置

    在本系列Spring Cloud Config的教程系列中,我们将讨论在运行时刷新属性配置的过程,我们将使用Spring Boot致动器/refresh端点进行/refresh . 此外,我们还将研究 ...

  9. SpringCloud创建Config多客户端公共配置

    1.说明 基于已经创建好的Spring Cloud配置中心, 在配置中心仅保存一套配置文件, 多个客户端可以通过配置中心读取到相同的配置, 而不需要在每个客户端重复配置一遍, 下面以一个Config ...

最新文章

  1. c语言用一维数组求字符串,c语言一维数组练习题.doc
  2. 【转载】从康耐视(NASDAQ : CGNX)看国内视觉识别行业的机会
  3. 安装使用vmware及vsphere流程介绍
  4. SpringBoot静态资源的映射
  5. 【USACO】电子游戏 有条件的背包
  6. Java通过HighCharts导出图表
  7. 区别德语的公母阴阳性别的秘诀
  8. python交互式数据可视化_基于Python实现交互式数据可视化的工具,你用过几种?...
  9. 业界:绿盟发布基于攻击链的威胁感知系统
  10. 杭州师范大学计算机考研难度,杭州师范大学网络空间安全考研难吗
  11. python手册中文版-python手册中文
  12. 计算机组装与维修blos,计算机组装与维护标准教程 设置bios参数.pptx
  13. html 项目实战摄影开课吧,最新《开课吧Web全栈架构师正式课》(Vue.JS及实战项目)...
  14. CentOS7下安装和开启远程连接reids
  15. yapi-404-接口字段验证不通过, 错误信息:shema 验证请求参数 schema is invalid: data.properties[‘otherParams‘].required sho
  16. MacBook Pro win7系统下使用 苹果鼠标 apple mouse
  17. 浏览器插件:脚本注入插件Tampermonkey(油猴)
  18. Pygame mixer 模块
  19. ssh远程登录输入yes说明
  20. WIN10打印机显示服务器脱机,win10系统打印机显示脱机状态怎么处理?

热门文章

  1. Check task status after 2016 Spring festival
  2. Pipeline Performance Management - Sales target configuration customizing
  3. 如何修改Fiori launchpad里tile count调用的触发时间间隔
  4. AWS负载均衡器的健康检查机制
  5. Cloud Connector的普通版本和Portable版本的区别
  6. SAP cloud platform 504 gateway time out Cloud connector
  7. Chrome浏览器扩展程序的本地备份
  8. 如何给SAP Cloud ConnectorRegion列表中添加新的Region
  9. iframe的src怎么携带参数_三种传递gRPC动态参数方式的使用体验
  10. Android左右声道控制软件,Android左右声道的控制