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 相关文章推荐
第五节--克隆
Nov 16 PHP
用PHP的ob_start();控制您的浏览器cache!
Feb 14 PHP
PHP 网页过期时间的控制代码
Jun 29 PHP
PHP提取数据库内容中的图片地址并循环输出
Mar 21 PHP
整理的一些实用WordPress后台MySQL操作命令
Jan 07 PHP
php新浪微博登录接口用法实例
Dec 23 PHP
php+mysqli事务控制实现银行转账实例
Jan 29 PHP
分享php多功能图片处理类
May 15 PHP
WordPress过滤垃圾评论的几种主要方法小结
Jul 11 PHP
PHP入门教程之操作符与控制结构流程详解
Sep 09 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
Sep 23 PHP
PHP模型Model类封装数据库操作示例
Mar 14 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
最简单的PHP程序--记数器
2006/10/09 PHP
收藏的PHP常用函数 推荐收藏保存
2010/02/21 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2014/11/29 PHP
php中ob_flush函数和flush函数用法分析
2015/03/18 PHP
php身份证号码检查类实例
2015/06/18 PHP
PHP性能优化大全(php.ini)
2016/05/20 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
一个加载js文件的小脚本
2007/06/28 Javascript
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
JavaScript 监听textarea中按键事件
2009/10/08 Javascript
使用SyntaxHighlighter实现HTML高亮显示代码的方法
2010/02/04 Javascript
javascript 函数使用说明
2010/04/07 Javascript
异步动态加载js与css文件的js代码
2013/09/15 Javascript
jquery使用each方法遍历json格式数据实例
2015/05/18 Javascript
jQuery分组选择器简单用法示例
2019/04/04 jQuery
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
9个JavaScript日常开发小技巧
2020/10/06 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
20行python代码实现人脸识别
2019/05/05 Python
python实现文件的备份流程详解
2019/06/18 Python
Django如何实现上传图片功能
2019/08/16 Python
TensorFlow学习之分布式的TensorFlow运行环境
2020/02/05 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
2020/02/25 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
windows下的pycharm安装及其设置中文菜单
2020/04/23 Python
基于Keras的格式化输出Loss实现方式
2020/06/17 Python
生产副总岗位职责
2013/11/28 职场文书
高中毕业的自我鉴定
2013/12/09 职场文书
军训自我鉴定
2014/01/22 职场文书
自我评价优缺点范文
2015/03/11 职场文书
幼儿园卫生保健制度
2015/08/05 职场文书
Python爬虫实战之爬取携程评论
2021/06/02 Python
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers