ThinkPHP连接数据库的方式汇总


Posted in PHP onDecember 05, 2014

本文实例汇总了ThinkPHP连接数据库的几种常用方式。分享给大家供大家参考。具体如下:

ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库适配器来处理,目前的数据库包括Mysql、MsSQL、PgSQL、Sqlite、Oracle、Ibase以及PDO的支持,如果应用需要使用数据库,必须配置数据库连接信息,数据库的配置文件有多种定义方式:

第一种:在项目配置文件里面定义

return array(  

'DB_TYPE'=> 'mysql',   

'DB_HOST'=> 'localhost',  

'DB_NAME'=>'thinkphp',   

'DB_USER'=>'root',   

'DB_PWD'=>'',   

'DB_PORT'=>'3306',  

'DB_PREFIX'=>'think_',  

// 其他项目配置参数………  

);

系统推荐使用该种方式,因为一般一个项目的数据库访问配置是相同的,该方法系统在连接数据库的时候会自动获取,无需手动连接.

可以对每个项目定义不同的数据库连接信息,还可以在调试配置文件(Conf/debug.php)里面定义调试数据库的配置信息,如果在项目配置文件和调试模式配置文件里面同时定义了数据库连接信息,那么在调试模式下面后者生效,部署模式下面前者生效.

第二种 使用DSN方式在初始化Db类的时候传参数

$db_dsn = "mysql://username:passwd@localhost:3306/DbName";  

$db = new Db($db_dsn);

该方式主要用于在控制器里面自己手动连接数据库的情况,或者用于创建多个数据库连接.

第三种 使用数组传参数

$DSN = array(   

'dbms'     => 'mysql',    

'username' => 'username',    

'password' => 'password',    

'hostname' => 'localhost',    

'hostport' => '3306',    

'database' => 'dbname'   

);  

$db = new Db($DSN);

该方式也是用于手动连接数据库的情况,或者用于创建多个数据库连接.

第四种 在模型类里面定义

protected $connection = array(   

'dbms'     => 'mysql',    

'username' => 'username',    

'password' => 'password',    

'hostname' => 'localhost',    

'hostport' => '3306',    

'database' => 'dbname'   

);  

// 或者使用下面的定义  

protected $connection = "mysql://username:passwd@localhost:3306/DbName";

如果在某个模型类里面定义了connection属性,则在实例化模型对象的时候,会使用该数据库连接信息进行数据库连接,通常用于某些数据表位于当前数据库连接之外的其它数据库.

ThinkPHP并不是在一开始就会连接数据库,而是在有数据查询操作的时候才会去连接数据库,额外的情况是,在系统第一次操作模型的时候,框架会自动连接数据库获取相关模型类的数据字段信息,并缓存下来.

(字段缓存目录:Runtime/Data/_fields)

ThinkPHP支持PDO方式,如果要使用PDO方式连接数据库,可以参考下面的设置.

我们以项目配置文件定义为例来说明:

return array(  

'DB_TYPE'=> 'pdo',   

// 注意DSN的配置针对不同的数据库有所区别 请参考PHP手册PDO类库部分  

'DB_DSN'=> 'mysql:host=localhost;dbname=think',  

'DB_USER'=>'root',   

'DB_PWD'=>'',   

'DB_PREFIX'=>'think_',  

// 其他项目配置参数………  

);

使用PDO方式的时候,要注意检查是否开启相关的PDO模块,DB_DSN参数仅对PDO方式连接才有效.

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

PHP 相关文章推荐
一个高ai的分页函数和一个url函数
Oct 09 PHP
PHP中的integer类型使用分析
Jul 27 PHP
PHP sprintf() 函数的应用(定义和用法)
Jun 29 PHP
Laravel框架表单验证详解
Sep 04 PHP
laravel容器延迟加载以及auth扩展详解
Mar 02 PHP
php实现以只读方式打开文件的方法
Mar 16 PHP
Zend Framework教程之Zend_Db_Table用法详解
Mar 21 PHP
PHP错误机制知识汇总
Mar 24 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
May 07 PHP
PHP设计模式之模板方法模式定义与用法详解
Apr 02 PHP
PHP随机数函数rand()与mt_rand()的讲解
Mar 25 PHP
laravel-admin的图片删除实例
Sep 30 PHP
PHP生成RSS文件类实例
Dec 05 #PHP
php实现两表合并成新表并且有序排列的方法
Dec 05 #PHP
ThinkPHP中redirect用法分析
Dec 05 #PHP
php查询ip所在地的方法
Dec 05 #PHP
smarty实现多级分类的方法
Dec 05 #PHP
Codeigniter框架实现获取分页数据和总条数的方法
Dec 05 #PHP
常见php数据文件缓存类汇总
Dec 05 #PHP
You might like
模拟xcopy的函数
2006/10/09 PHP
PHP对象转换为数组函数(递归方法)
2012/02/04 PHP
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
2020/04/26 PHP
Dom加载让图片加载完再执行的脚本代码
2008/05/15 Javascript
解析瀑布流布局:JS+绝对定位的实现
2013/05/08 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
2014/11/20 NodeJs
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
Jquery实现仿京东商城省市联动菜单
2015/11/19 Javascript
vue-scroller记录滚动位置的示例代码
2018/01/17 Javascript
微信小程序实现全国机场索引列表
2018/01/31 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
[01:12]DOTA2 2015年秋季互动指南
2015/11/10 DOTA
Django中使用locals()函数的技巧
2015/07/16 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
浅谈python中的正则表达式(re模块)
2017/10/17 Python
名片管理系统python版
2018/01/11 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
Python supervisor强大的进程管理工具的使用
2019/04/24 Python
Python标准库itertools的使用方法
2020/01/17 Python
Pytest框架之fixture的详细使用教程
2020/04/07 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
2020/04/26 Python
如何在pycharm中安装第三方包
2020/10/27 Python
美国受欢迎的女性牛仔裤品牌:DL1961
2016/11/12 全球购物
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
初中地理教学反思
2014/01/11 职场文书
医院检讨书范文
2014/02/01 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
补充协议书范本
2014/04/23 职场文书
新闻通讯稿范文
2015/07/22 职场文书