ThinkPHP3.2.3数据库设置新特性


Posted in PHP onMarch 05, 2015

ThinkPHP3.2.3版本数据库驱动采用PDO完全重写,配置和使用上面也比之前版本更加灵活和强大,我们来了解下如何使用。

首先,3.2.3的数据库配置信息有所调整,完整的数据库设置包括:

/* 数据库设置 */

 'DB_TYPE'               =>  '',     // 数据库类型

 'DB_HOST'               =>  '', // 服务器地址

 'DB_NAME'               =>  '',          // 数据库名

 'DB_USER'               =>  '',      // 用户名

 'DB_PWD'                =>  '',          // 密码

 'DB_PORT'               =>  '',        // 端口

 'DB_PREFIX'             =>  '',    // 数据库表前缀

 'DB_PARAMS'          =>  array(), // 数据库连接参数

 'DB_DEBUG'  =>  TRUE, // 数据库调试模式 开启后可以记录SQL日志

 'DB_LITE'             =>  false,    // 使用数据库Lite模式

 'DB_FIELDS_CACHE'       =>  true,        // 启用字段缓存

 'DB_CHARSET'            =>  'utf8',      // 数据库编码默认采用utf8

 'DB_DEPLOY_TYPE'        =>  0, // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)

 'DB_RW_SEPARATE'        =>  false,       // 数据库读写是否分离 主从式有效

 'DB_MASTER_NUM'         =>  1, // 读写分离后 主服务器数量

 'DB_SLAVE_NO'           =>  '', // 指定从服务器序号

相对3.2.2版本来说,取消了如下设置参数:

'DB_FIELDTYPE_CHECK' // 3.2.3强制进行字段类型检测了

 'DB_SQL_BUILD_CACHE' // 3.2.3取消了SQL创建缓存

 'DB_SQL_BUILD_QUEUE' // 3.2.3取消了SQL创建缓存

 'DB_SQL_BUILD_LENGTH' // 3.2.3取消了SQL创建缓存

 'DB_SQL_LOG' // 由新增的DB_DEBUG参数取代

 'DB_BIND_PARAM' // 新版采用PDO 自动参数绑定 无需设置

新增的数据库设置参数包括:

'DB_DEBUG'  //用于开启数据库调试模式,开启后即可记录SQL日志

 'DB_LITE' // 是否采用数据库Lite模式连接 开启后只能使用原生SQL查询

3.2.2版本数据库的调试模式和项目的调试模式(由APP_DEBUG常量定义)是绑定的 ,3.2.3版本开始数据库的调试模式是独立设置(由DB_DEBUG参数设置)的。

DB_TYPE参数为数据库类型设置,目前支持的驱动包括mysql/sqlite/oracle/pgsql/sqlsrv/firebird(其他的数据库类型需要增加驱动),设置如下:
'DB_TYPE'=>'mysql', // 不再支持设置为PDO 也不再区分mysql和mysqli
复制代码
数据库的连接信息,主要包括下面参数:

'DB_HOST'               =>  '', // 服务器地址 采用IP地址

 'DB_NAME'               =>  '',          // 数据库名

 'DB_USER'               =>  '',      // 用户名

 'DB_PWD'                =>  '',          // 密码

 'DB_PORT'               =>  '',        // 端口 留空则取默认端口

 'DB_CHARSET'            =>  '',      // 数据库编码

以上设置参数会在实例化PDO的时候自动转换为PDO的连接参数传入。

DB_DSN参数一般无需设置,系统的数据库驱动会进行默认设置,如果需要调整,请遵循PDO的相关数据库连接的DSN设置进行设置。

DB_PARAMS用于设置数据库的连接参数,会传入PDO实例化的第四个参数。

下面是一个典型的数据库全局设置:

'DB_TYPE'               =>  'mysql',     // 数据库类型

 'DB_HOST'               =>  '192.168.1.10', // 服务器地址

 'DB_NAME'               =>  'thinkphp',          // 数据库名

 'DB_USER'               =>  'root',      // 用户名

 'DB_PWD'                =>  '1234',          // 密码

 'DB_PORT'               =>  '3306',        // 端口

 'DB_PREFIX'             =>  'think_',    // 数据库表前缀

 'DB_CHARSET'            =>  'utf8',      // 数据库编码

 'DB_DEBUG'  =>  TRUE, // 数据库调试模式 开启后可以记录SQL日志

如果在模型类中设置单独的数据库连接信息connection属性,可以使用下面的数组或者字符串方式:

//在模型里单独设置数据库连接信息

 namespace Home\Model;

 use Think\Model;

 class UserModel extends Model{

 // 采用数组方式定义

    protected $connection = array(

        'db_type'  => 'mysql',

        'db_user'  => 'root',

        'db_pwd'   => '1234',

        'db_host'  => '192.168.1.10',

        'db_port'  => '3306',

        'db_name'  => 'thinkphp',

        'db_charset' =>    'utf8',

    );

 }

注意:在模型中设置的数据库连接设置参数采用全局配置的小写名。

或者采用字符串方式定义,格式为:
数据库类型://用户名:密码@数据库地址:数据库端口/数据库名#字符集
例如:

//在模型里单独设置数据库连接信息

 namespace Home\Model;

 use Think\Model;

 class UserModel extends Model{

    // 使用字符串方式定义

    protected $connection = 'mysql://root:1234@192.168.1.10:3306/thinkphp#utf8';

 }

也可以通过配置文件设置,例如:

//数据库配置1

 'DB_CONFIG1' => array(

    'db_type'  => 'mysql',

    'db_user'  => 'root',

    'db_pwd'   => '1234',

    'db_host'  => '192.168.1.10',

    'db_port'  => '3306',

    'db_name'  => 'thinkphp',

    'db_charset'=>    'utf8',

 ),

 //数据库配置2

 'DB_CONFIG2' => 'mysql://root:1234@192.168.1.10:3306/thinkphp#utf8';

然后在模型里面定义:

//在模型里单独设置数据库连接信息

 namespace Home\Model;

 use Think\Model;

 class UserModel extends Model{

    //调用配置文件中的数据库配置1

    protected $connection = 'DB_CONFIG1';

    // 或者

    protected $connection = 'DB_CONFIG2';

 }

除了在模型定义的时候指定数据库连接信息外,我们还可以在实例化的时候指定数据库连接信息,如果采用的是M方法实例化模型的话,也可以支持传入不同的数据库连接信息,例如:

$User = M('User','other_','mysql://root:1234@192.168.1.10/demo#utf8');

表示实例化User模型,连接的是demo数据库的other_user表,采用的连接信息是第三个参数配置的。
如果我们在项目配置文件中已经配置了DB_CONFIG2的话,也可以采用:
$User = M('User','other_','DB_CONFIG2');

以上就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
PHP实现分页的一个示例
Oct 09 PHP
PHP中的日期及时间
Nov 23 PHP
Smarty安装配置方法
Apr 10 PHP
解析Ubuntu下crontab命令的用法
Jun 24 PHP
PHP 过滤页面中的BOM(实现代码)
Jun 29 PHP
php 模拟post_验证页面的返回状态(实例讲解)
Oct 28 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
Dec 24 PHP
PHP使用GD库输出汉字的方法【测试可用】
Nov 10 PHP
学习thinkphp5.0验证类使用方法
Nov 16 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
May 24 PHP
PHP cookie与session会话基本用法实例分析
Nov 18 PHP
php与阿里云短信接口接入操作案例分析
May 27 PHP
ThinkPHP 3.2 版本升级了哪些内容
Mar 05 #PHP
thinkPHP学习笔记之安装配置篇
Mar 05 #PHP
PHP判断浏览器、判断语言代码分享
Mar 05 #PHP
Php-Redis安装测试笔记
Mar 05 #PHP
PHP中文乱码解决方案
Mar 05 #PHP
php判断输入是否是纯数字,英文,汉字的方法
Mar 05 #PHP
PHP使用适合阅读的格式显示文件大小的方法
Mar 05 #PHP
You might like
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
fleaphp rolesNameField bug解决方法
2011/04/23 PHP
php导入导出excel实例
2013/10/25 PHP
php简单压缩css样式示例
2016/09/22 PHP
yii2 commands模式以及配置crontab定时任务的方法
2017/08/19 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
用javascript实现读取txt文档的脚本
2007/07/20 Javascript
学习面向对象之面向对象的基本概念:对象和其他基本要素
2010/11/30 Javascript
使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
2011/04/07 Javascript
遨游,飞飞,IE,空中网 浏览器无提示关闭方法
2011/07/11 Javascript
JavaScript实现QueryString获取GET参数的方法
2013/07/02 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
nodejs npm package.json中文文档
2014/09/04 NodeJs
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
jQuery图片左右滚动代码 有左右按钮实例
2016/06/20 Javascript
深入解析Javascript闭包的功能及实现方法
2016/07/10 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
nodejs 十六进制字符串型数据与btye型数据相互转换
2018/07/30 NodeJs
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
Python简单连接MongoDB数据库的方法
2016/03/15 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
Python计算时间间隔(精确到微妙)的代码实例
2019/02/26 Python
wxpython绘制音频效果
2019/11/18 Python
Python实现钉钉订阅消息功能
2020/01/14 Python
CSS3 简写animation
2012/05/10 HTML / CSS
FitFlop美国官网:英国符合人体工学的鞋类品牌
2018/10/05 全球购物
工商企业管理应届生求职信
2013/11/03 职场文书
学生励志演讲稿
2014/01/06 职场文书
办公室副主任职责范本
2014/03/08 职场文书
公司节能减排方案
2014/05/16 职场文书
民主生活会汇报材料
2014/12/15 职场文书
《狼牙山五壮士》教学反思
2016/02/17 职场文书
九年级语文教学反思
2016/03/03 职场文书
靠谱准确的求职信
2019/04/02 职场文书