GVKun编程网logo

ThinkPHP3.2.3数据库设置新特性(thinkphp数据库操作)

13

关于ThinkPHP3.2.3数据库设置新特性和thinkphp数据库操作的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于PHP编程:ThinkPHP3.2.3数据库设置新特性、Think

关于ThinkPHP3.2.3数据库设置新特性thinkphp数据库操作的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于PHP编程:ThinkPHP3.2.3数据库设置新特性、ThinkPHP3.0新特性: 快捷查询、ThinkPHP3.1.3版本新特性概述、ThinkPHP3.1.3版本新特性概述_PHP等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

ThinkPHP3.2.3数据库设置新特性(thinkphp数据库操作)

ThinkPHP3.2.3数据库设置新特性(thinkphp数据库操作)

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

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

代码如下:
'',// 数据库类型 '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版本来说,取消了如下设置参数:

代码如下:
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 自动参数绑定 无需设置

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

代码如下: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

数据库的连接信息,主要包括下面参数:

代码如下: '',// 服务器地址 采用IP地址 'DB_NAME' => '',// 端口 留空则取默认端口 'DB_CHARSET' => '',// 数据库编码

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

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

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

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

代码如下: '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属性,可以使用下面的数组或者字符串方式:

代码如下: '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'; }

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

代码如下: array( 'db_type' => 'MysqL', '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方法实例化模型的话,也可以支持传入不同的数据库连接信息,例如:

代码如下:MysqL://root:1234@192.168.1.10/demo#utf8');

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

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

PHP编程:ThinkPHP3.2.3数据库设置新特性

PHP编程:ThinkPHP3.2.3数据库设置新特性

《ThinkPHP3.2.3数据库设置新特性》要点:
本文介绍了ThinkPHP3.2.3数据库设置新特性,希望对您有用。如果有疑问,可以联系我们。

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

PHP教程首先,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'           =>  '',// 指定从服务器序号

PHP教程相对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 自动参数绑定 无需设置

PHP教程新增的数据库设置参数包含:

代码如下:

'DB_DEBUG'  //用于开启数据库调试模式,开启后即可记录sql日志
 'DB_LITE' // 是否采用数据库Lite模式连接 开启后只能使用原生SQL查询

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

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

代码如下:

'DB_HOST'               =>  '',// 服务器地址 采用IP地址
 'DB_NAME'               =>  '',        // 端口 留空则取默认端口
 'DB_CHARSET'            =>  '',      // 数据库编码

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

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

PHP教程DB_ParaMS用于设置数据库的连接参数,会传入PDO实例化的第四个参数.

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

代码如下:

'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日志

PHP教程如果在模型类中设置单独的数据库连接信息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',
    );
 }

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

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

代码如下:

//在模型里单独设置数据库连接信息
 namespace Home\Model;
 use Think\Model;
 class usermodel extends Model{
    // 使用字符串方式定义
    protected $connection = 'MysqL://root:1234@192.168.1.10:3306/thinkPHP#utf8';
 }

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

代码如下:

//数据库配置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';

PHP教程然后在模型里面定义:

代码如下:

//在模型里单独设置数据库连接信息
 namespace Home\Model;
 use Think\Model;
 class usermodel extends Model{
    //调用配置文件中的数据库配置1
    protected $connection = 'DB_CONfig1';
    // 或者
    protected $connection = 'DB_CONfig2';
 }

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

代码如下:

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

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

PHP教程以上便是本文的全部内容了,希望大家能够喜欢.

小编培训学院每天发布《ThinkPHP3.2.3数据库设置新特性》等实战技能,PHP、MysqL、LINUX、APP、JS,CSS全面培养人才。

ThinkPHP3.0新特性: 快捷查询

ThinkPHP3.0新特性: 快捷查询

新版增加了快捷查询方式,可以进一步简化查询条件的写法,例如:

一、实现不同字段相同的查询条件

$User M("User"); // 实例化User对象

$map[''name|title''] = ''thinkphp'';

// 把查询条件传入查询方法

$User->where($map)->select()

查询条件就变成 name= ''thinkphp'' OR title = ''thinkphp''

 

二、实现不同字段不同的查询条件

$User M("User"); // 实例化User对象

$map[''status&title''] =array(''1'',''thinkphp'',''_multi''=>true);

// 把查询条件传入查询方法

$User->where($map)->select()

''_multi''=>true必须加在数组的最后,表示当前是多条件匹配,这样查询条件就变成 status= 1 AND title = ''thinkphp'' ,查询字段支持更多的,例如:

$map[''status&score&title''] =array(''1'',array(''gt'',''0''),''thinkphp'',''_multi''=>true);

查询条件就变成 status= 1 AND score >0 AND  title = ''thinkphp''

 

注意:快捷查询方式中“|”和“&”不能同时使用


ThinkPHP3.1.3版本新特性概述

ThinkPHP3.1.3版本新特性概述

thinkphp3.1.3版本有一些特性,还是值得关注的,下面来简单说下。

1、异常方面的改进

新版的ThinkPHP3.1.3重写了异常类ThinkException(其实是完全简化成了直接继承系统Exception类),并且把异常逻辑改进封装到Think类中。主要涉及到Think类的appException方法和halt函数。
并且改进后的异常处理支持系统致命错误的捕获,Think类增加了fatalError方法,原理是使用了

register_shutdown_function(array(''Think'',''fatalError''));

登录后复制

因此可以使得系统致命错误通过统一的异常模板界面友好提示。

2、对PDO参数绑定的支持

因为ThinkPHP3.*版本采用的是混合数据库驱动,同时也支持PDO方式,但之前版本并未针对PDO做优化,只是简单的封装。3.1.3版本完善了对PDO以及Sqlarv的支持,因为PDO和sqlsrv都支持参数绑定操作(注意,不支持参数绑定的数据库和驱动无法使用参数绑定功能)。

立即学习“PHP免费学习笔记(深入)”;

系统对参数绑定操作的支持分两种:自动绑定和手动绑定

自动绑定是对于写入操作(这里包括数据的新增和更新),框架会自动把相关数据转换成参数绑定方式执行,这个部分不需要额外处理,因为sqlsrv只有采用参数绑定的方式传值才能支持UTF8数据写入,但是每次写入数据都要采用手动参数绑定的话,就会显得比较麻烦。为了避免和手动参数绑定冲突,自动参数绑定采用的是对字段名md5编码的方式。

手动绑定,通常用于查询条件之类的,并且采用bind连贯操作方法,例如:

$model->where(array(''id''=>'':id'',''name''=>'':name''))->bind(array('':id''=>$id,'':name''=>$name))->select();

登录后复制


3、增加变量安全获取方法

之前版本通过Action类的_post _get等方法来安全获取变量,虽然没问题,但局限是只能在控制器中获取变量,新版把这一功能独立成一个快捷方法I,可以用于任何地方。
使用方法如下:

I(''get.id'',0); // 获取$_GET[''id''] 如果不存在则默认为0
I(''post.name'','''',''htmlspecialchars''); // 获取$_POST[''name''] 采用htmlspecialchars方法过滤
I(''id''); // 获取id参数 自动判断get或者post
I(''param.id''); // 获取id参数 自动判断get或者post 和上面用法等效
I(''put.id''); // 获取put请求的id参数

登录后复制

还支持获取整个数组,例如:

I(''get.''); // 获取$_GET数组
I(''post.''); // 获取$_POST数组

登录后复制

在使用I方法的情况下,系统的VAR_FILTERS和DEFAULT_FILTER过滤配置依然有效。

4、where方法的多次调用

模型类的where方法可以支持数组方式的多次调用,例如:

$model->where(array(''a''=>1,''c''=>2))->where(array(''a''=>3,''b''=>1))->select();

登录后复制

多个where条件的时候,后面的条件会合并到前面的条件,最终的条件等效于:

$model->where(array(''a''=>3,''b''=>1,''c''=>2))->select();

登录后复制


5、控制器中的assign方法支持连贯操作

我们可以在控制器使用:

$this->assign(''name'',$name)->assign(''email'',$email)->display();

登录后复制

或者:

$this->assign(array(''name''=>$name,''email''=>$email))->display();

登录后复制

ThinkPHP3.1.3版本新特性概述_PHP

ThinkPHP3.1.3版本新特性概述_PHP

ThinkPHP

thinkphp3.1.3版本有一些特性,还是值得关注的,下面来简单说下。

1、异常方面的改进

新版的ThinkPHP3.1.3重写了异常类ThinkException(其实是完全简化成了直接继承系统Exception类),并且把异常逻辑改进封装到Think类中。主要涉及到Think类的appException方法和halt函数。
并且改进后的异常处理支持系统致命错误的捕获,Think类增加了fatalError方法,原理是使用了

1

register_shutdown_function(array(''Think'',''fatalError''));

登录后复制

因此可以使得系统致命错误通过统一的异常模板界面友好提示。

2、对PDO参数绑定的支持

因为ThinkPHP3.*版本采用的是混合数据库驱动,同时也支持PDO方式,但之前版本并未针对PDO做优化,只是简单的封装。3.1.3版本完善了对PDO以及Sqlarv的支持,因为PDO和sqlsrv都支持参数绑定操作(注意,不支持参数绑定的数据库和驱动无法使用参数绑定功能)。

立即学习“PHP免费学习笔记(深入)”;

系统对参数绑定操作的支持分两种:自动绑定和手动绑定

自动绑定是对于写入操作(这里包括数据的新增和更新),框架会自动把相关数据转换成参数绑定方式执行,这个部分不需要额外处理,因为sqlsrv只有采用参数绑定的方式传值才能支持UTF8数据写入,但是每次写入数据都要采用手动参数绑定的话,就会显得比较麻烦。为了避免和手动参数绑定冲突,自动参数绑定采用的是对字段名md5编码的方式。

手动绑定,通常用于查询条件之类的,并且采用bind连贯操作方法,例如:

1

$model->where(array(''id''=>'':id'',''name''=>'':name''))->bind(array('':id''=>$id,'':name''=>$name))->select();

登录后复制


3、增加变量安全获取方法

之前版本通过Action类的_post _get等方法来安全获取变量,虽然没问题,但局限是只能在控制器中获取变量,新版把这一功能独立成一个快捷方法I,可以用于任何地方。
使用方法如下:

1

2

3

4

5

I(''get.id'',0); // 获取$_GET[''id''] 如果不存在则默认为0

I(''post.name'','''',''htmlspecialchars''); // 获取$_POST[''name''] 采用htmlspecialchars方法过滤

I(''id''); // 获取id参数 自动判断get或者post

I(''param.id''); // 获取id参数 自动判断get或者post 和上面用法等效

I(''put.id''); // 获取put请求的id参数

登录后复制

还支持获取整个数组,例如:

1

2

I(''get.''); // 获取$_GET数组

I(''post.''); // 获取$_POST数组

登录后复制

在使用I方法的情况下,系统的VAR_FILTERS和DEFAULT_FILTER过滤配置依然有效。

4、where方法的多次调用

模型类的where方法可以支持数组方式的多次调用,例如:

1

$model->where(array(''a''=>1,''c''=>2))->where(array(''a''=>3,''b''=>1))->select();

登录后复制

多个where条件的时候,后面的条件会合并到前面的条件,最终的条件等效于:

1

$model->where(array(''a''=>3,''b''=>1,''c''=>2))->select();

登录后复制


5、控制器中的assign方法支持连贯操作

我们可以在控制器使用:

1

$this->assign(''name'',$name)->assign(''email'',$email)->display();

登录后复制

或者:

1

$this->assign(array(''name''=>$name,''email''=>$email))->display();

登录后复制

关于ThinkPHP3.2.3数据库设置新特性thinkphp数据库操作的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于PHP编程:ThinkPHP3.2.3数据库设置新特性、ThinkPHP3.0新特性: 快捷查询、ThinkPHP3.1.3版本新特性概述、ThinkPHP3.1.3版本新特性概述_PHP的相关知识,请在本站寻找。

本文标签: