config database.php,CodeIgniter配置之database.php用法实例分析
这篇文章主要介绍了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用法实例分析相关推荐
- 如果要用thinkphp框架_php需要改哪些配置,thinkPHP框架动态配置用法实例分析
本文实例讲述了thinkPHP框架动态配置用法.分享给大家供大家参考,具体如下: 最近在用@ThinkPHP 做系统的时候,要用到一个功能,就要动态的将系统的配置参数保存到Config文件中.以往,我 ...
- oracle 百万记录 cache,学习笔记:通过案例深入学习In-Memory Database Cache 总结配置过程...
天萃荷净 详细记录关于In-Memory Database Cache配置方法与使用案例 一.Oracle数据库创建相关用户和权限 1.创建timesten用户 store information a ...
- Flowable 6.6.0表单 - 1.配置 - 1.4 数据库配置(Database configuration)
培训视频推荐 CSDN上提供了Flowable 6.6.0的系列培训视频课程,欢迎有兴趣的朋友前往学习. <Flowable流程入门课程> <Flowable流程高级课程> & ...
- apache2.2.21下为codeigniter配置url地址重写
2019独角兽企业重金招聘Python工程师标准>>> apache2.2.21下为codeigniter配置url地址重写 1.首先打开apache的配置文件,httpd.conf ...
- Oracle Database 11G 完全备份[Whole Database Backups]概述
Oracle Database 11G 完全备份[Whole Database Backups]概述 RMAN 的完全备份(Whole Database Backups using RMAN) Ora ...
- Git config 查看和设置配置信息
Git使用git config 指令来指定与git相关的配置 config 配置有system级别.global(用户级别).和local(当前仓库)三个级别,三个设置范围system->glo ...
- vue.config.js多页配置
vue.config.js多页配置,具体看代码: "use strict"; const path = require("path"); var webpack ...
- 在运行时在Spring Cloud Config中刷新属性配置
在本系列Spring Cloud Config的教程系列中,我们将讨论在运行时刷新属性配置的过程,我们将使用Spring Boot致动器/refresh端点进行/refresh . 此外,我们还将研究 ...
- SpringCloud创建Config多客户端公共配置
1.说明 基于已经创建好的Spring Cloud配置中心, 在配置中心仅保存一套配置文件, 多个客户端可以通过配置中心读取到相同的配置, 而不需要在每个客户端重复配置一遍, 下面以一个Config ...
最新文章
- c语言用一维数组求字符串,c语言一维数组练习题.doc
- 【转载】从康耐视(NASDAQ : CGNX)看国内视觉识别行业的机会
- 安装使用vmware及vsphere流程介绍
- SpringBoot静态资源的映射
- 【USACO】电子游戏 有条件的背包
- Java通过HighCharts导出图表
- 区别德语的公母阴阳性别的秘诀
- python交互式数据可视化_基于Python实现交互式数据可视化的工具,你用过几种?...
- 业界:绿盟发布基于攻击链的威胁感知系统
- 杭州师范大学计算机考研难度,杭州师范大学网络空间安全考研难吗
- python手册中文版-python手册中文
- 计算机组装与维修blos,计算机组装与维护标准教程 设置bios参数.pptx
- html 项目实战摄影开课吧,最新《开课吧Web全栈架构师正式课》(Vue.JS及实战项目)...
- CentOS7下安装和开启远程连接reids
- yapi-404-接口字段验证不通过, 错误信息:shema 验证请求参数 schema is invalid: data.properties[‘otherParams‘].required sho
- MacBook Pro win7系统下使用 苹果鼠标 apple mouse
- 浏览器插件:脚本注入插件Tampermonkey(油猴)
- Pygame mixer 模块
- ssh远程登录输入yes说明
- WIN10打印机显示服务器脱机,win10系统打印机显示脱机状态怎么处理?
热门文章
- Check task status after 2016 Spring festival
- Pipeline Performance Management - Sales target configuration customizing
- 如何修改Fiori launchpad里tile count调用的触发时间间隔
- AWS负载均衡器的健康检查机制
- Cloud Connector的普通版本和Portable版本的区别
- SAP cloud platform 504 gateway time out Cloud connector
- Chrome浏览器扩展程序的本地备份
- 如何给SAP Cloud ConnectorRegion列表中添加新的Region
- iframe的src怎么携带参数_三种传递gRPC动态参数方式的使用体验
- Android左右声道控制软件,Android左右声道的控制