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 相关文章推荐
用PHP 4.2书写安全的脚本
Oct 09 PHP
我的论坛源代码(十)
Oct 09 PHP
php 移除数组重复元素的一点说明
Nov 27 PHP
PHP has encountered an Access Violation 错误的解决方法
Jan 17 PHP
php使用curl访问https示例分享
Jan 17 PHP
ThinkPHP使用心得分享-分页类Page的用法
May 15 PHP
PHP闭包实例解析
Sep 08 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
Sep 29 PHP
yii实现图片上传及缩略图生成的方法
Dec 04 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
Feb 14 PHP
PHP写API输出的时用echo的原因详解
Apr 28 PHP
PHP的cookie与session原理及用法详解
Sep 27 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
真正面向对象编程:PHP5.01发布
2006/10/09 PHP
由php if 想到的些问题
2008/03/22 PHP
php学习笔记之 函数声明
2011/06/09 PHP
PHP中strtotime函数使用方法分享
2012/01/10 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
2014/11/17 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
PHP基于MySQL数据库实现对象持久层的方法
2015/06/17 PHP
PHP实现git部署的方法教程
2017/12/19 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
Jquery Validate 正则表达式实用验证代码大全
2013/08/23 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
javascript实现禁止右键和F12查看源代码
2014/12/26 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
2016/01/10 Javascript
JSONP原理及简单实现
2016/06/08 Javascript
bootstrap快速制作后台界面
2016/12/05 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
如何用js判断dom是否有存在某class的值
2017/02/13 Javascript
vue-devtools的安装步骤
2018/04/23 Javascript
Electron-vue开发的客户端支付收款工具的实现
2019/05/24 Javascript
layer弹出层自定义提交取消按钮的例子
2019/09/10 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
2020/02/03 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
Vue使用鼠标在Canvas上绘制矩形
2020/12/24 Vue.js
Python调用C++程序的方法详解
2017/01/24 Python
Python入门之后再看点什么好?
2018/03/05 Python
Python-numpy实现灰度图像的分块和合并方式
2020/01/09 Python
LODI女鞋在线商店:阿利坎特的鞋类品牌
2019/02/15 全球购物
Delphi CS笔试题
2014/01/04 面试题
硕士研究生求职自荐信范文
2014/03/11 职场文书
鸿星尔克广告词
2014/03/21 职场文书
内乡县衙导游词
2015/02/05 职场文书
SpringBoot项目中控制台日志的保存配置操作
2021/06/18 Java/Android
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript