ThinkPHP连接数据库的方式汇总_php实例

本文实例汇总了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相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》及《ThinkPHP常用方法总结》

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

时间: 2024-10-04 00:43:56

ThinkPHP连接数据库的方式汇总_php实例的相关文章

thinkphp模板输出技巧汇总_php实例

本文实例总结了thinkphp模板输出技巧.分享给大家供大家参考.具体总结如下: 一.变量输出(重点) 1.标量输出: 复制代码 代码如下: {$name} 2.数组输出 复制代码 代码如下: {$name[0]}  {$name['k2']}  {$name.k1} 3.对象输出 复制代码 代码如下: {$name:k}//调用这个对象的成员属性K  {$name->k}//传统调用K方法  二.系统变量 复制代码 代码如下: {$Think.get.id}//在模板中调用系统变量,得到提供的

ThinkPHP关于session的操作方法汇总_php实例

本文详细讲述了ThinkPHP关于session的各种操作方法,详情如下: ThinkPHP操作session官方的说明文档如下: start 启动session pause 暂停session clear 清除session destroy 销毁session get 获取session值 getLocal 获取私有session值 set 设置session值 setLocal 设置私有session值 name 获取或者设置session_name is_set 是否设置session值

PHP错误机制知识汇总_php实例

PHP的错误机制也是非常复杂的,做了几年php,也没有仔细总结过,现在就补上这一课. 特别说明:文章的PHP版本使用5.5.32 PHP的错误级别 首先需要了解php有哪些错误.截至到php5.5,一共有16个错误级别 注意:尝试下面的代码的时候请确保打开error_log: error_reporting(E_ALL); ini_set('display_errors', 'On'); E_ERROR 这种错误是致命错误,会在页面显示Fatal Error, 当出现这种错误的时候,程序就无法继

PHP执行linux命令常用函数汇总_php实例

一般情况下,很少会用php去执行linux命令,不过特殊情况下,你也许会用到这些函数.以前我知道有二个函数可以执行linux命令,一个是exec,一个是shell_exec.其实有很多的,结合手册内容,介绍以下6个函数. 1,exec函数 <?php $test = "ls /tmp/test"; //ls是linux下的查目录,文件的命令 exec($test,$array); //执行命令 print_r($array); ?> 返回结果如下: [root@krlcgc

php操作csv文件代码实例汇总_php实例

1.读取csv数据, 输出到sales.csv文件中: $sales = array( array('Northeast', '2004-01-01', '2004-02-01', 12.54), array('Northwest', '2004-01-01', '2004-02-01', 546.33), array('Southeast', '2004-01-01', '2004-02-01', 93.26), array('Southwest', '2004-01-01', '2004-0

thinkphp缓存技术详解_php实例

本文详细分析了thinkphp的缓存技术.分享给大家供大家参考.具体分析如下: 如果没有缓存的网站是百万级或者千万级的访问量,会给数据库或者服务器造成很大的压力,通过缓存,大幅减少服务器和数据库的负荷,假如我们把读取数据的过程分为三个层,第一个是访问层,第一个是缓存层,第三个是数据库存取层,如果没有缓存层,访问层是直接从数据库存取层读取数据,而设置缓存后,访问层不再是直接在数据库存取层读取,而是从缓存层读取数据. 我们做个简单的对比,假设一个页面,在一个小时可被访问100万次,如果这个页面每次被

ThinkPHP字符串函数及常用函数汇总_php实例

本文汇总了ThinkPHP的字符串处理函数及其他一些常用函数,可供开发人员参考使用.详情如下: get_client_ip() 获取客户端的IP地址 msubstr($str, $start=0, $length, $charset="utf-8″, $suffix=true) $str:要截取的字符串 $start=0:开始位置,默认从0开始 $length:截取长度 $charset="utf-8″:字符编码,默认UTF-8 $suffix=true:是否在截取后的字符后面显示省略

ThinkPHP中的常用查询语言汇总_php实例

本文实例汇总了ThinkPHP中的常用查询语言,供大家参考之用.相信能给大家ThinkPHP开发带来一定的帮助.具体如下: 一.普通查询: 在查询带入where条件等,最少有三种形式 1.字符串形式: 'id>5 and id<9' 2.数组形式: 示例代码如下: $user=M('user'); $data['username']='liwenkai'; $list=$user->where(array('username'=>'liwenkai'))->select();

Thinkphp批量更新数据的方法汇总_php实例

以下小编给大家列出了三种实现thinkphp批量更新数据的方法,写的不好还请见谅,有意见欢迎提出,共同学习进步! 方法一: //批量修改 data二维数组 field关键字段 参考ci 批量修改函数 传参方式 function batch_update($table_name='',$data=array(),$field=''){ if(!$table_name||!$data||!$field){ return false; }else{ $sql='UPDATE '.$table_name