ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库适配器来处理。目前的数据库包括Mysql、MsSQL、PgSQL、Sqlite、Oracle、Ibase以及PDO的支持,如果应用需要使用数据库,必须配置数据库连接信息,数据库的配置文件有多种定义方式:
 
第一种 在项目配置文件里面定义
在项目的配置文件Config/config.php 文件里,增加以下数据库配置选项即可达到数据库连接目的:
PHP Code复制内容到剪贴板
  1. return array(
  2. ‘DB_TYPE’=> ‘mysql’,
  3. ‘DB_HOST’=> ‘localhost’,
  4. ‘DB_NAME’=>’thinkphp’,
  5. ‘DB_USER’=>’root’,
  6. ‘DB_PWD’=>”,
  7. ‘DB_PORT’=>’3306′,
  8. ‘DB_PREFIX’=>’think_’,
  9. // 其他项目配置参数………
  10. );
 
系统推荐使用该种方式,因为一般一个项目的数据库访问配置是相同的。该方法系统在连接数据库的时候会自动获取,无需手动连接。
 
可以对每个项目定义不同的数据库连接信息,还可以在调试配置文件(Conf/debug.php)里面定义调试数据库的配置信息,如果在项目配置文件和调试模式配置文件里面同时定义了数据库连接信息,那么在调试模式下面后者生效,部署模式下面前者生效。
 
第二种 使用DSN方式在初始化Db类的时候传参数
使用这种时,it动力提醒大家,可以把后面的dns做为配置文件,这样方便统一修改;
PHP Code复制内容到剪贴板
  1. $db_dsn = “mysql://username:passwd@localhost:3306/DbName”;
  2. $db = new Db($db_dsn);
 
该方式主要用于在控制器里面自己手动连接数据库的情况,或者用于创建多个数据库连接。
 
第三种 使用数组传参数
 
PHP Code复制内容到剪贴板
  1. $DSN = array(
  2. ‘dbms’ => ‘mysql’,
  3. ‘username’ => ‘username’,
  4. ‘password’ => ‘password’,
  5. ‘hostname’ => ‘localhost’,
  6. ‘hostport’ => ’3306′,
  7. ‘database’ => ‘dbname’
  8. );
  9. $db = new Db($DSN);
 
该方式也是用于手动连接数据库的情况,或者用于创建多个数据库连接。
 
第四种 在模型类里面定义
如果是单独只有某个模型下独立去连接某些数据库服务器时,可以使用这个单独设置的方法:
PHP Code复制内容到剪贴板
  1. protected $connection = array(
  2. ‘dbms’ => ‘mysql’,
  3. ‘username’ => ‘username’,
  4. ‘password’ => ‘password’,
  5. ‘hostname’ => ‘localhost’,
  6. ‘hostport’ => ’3306′,
  7. ‘database’ => ‘dbname’
  8. );
// 或者使用下面的定义
 
PHP Code复制内容到剪贴板
  1. protected $connection = ”mysql://username:passwd@localhost:3306/DbName”;
 
如果在某个模型类里面定义了connection属性,则在实例化模型对象的时候,会使用该数据库连接信息进行数据库连接。通常用于某些数据表位于当前数据库连接之外的其它数据库。
 
ThinkPHP并不是在一开始就会连接数据库,而是在有数据查询操作的时候才会去连接数据库。额外的情况是,在系统第一次操作模型的时候,框架会自动连接数据库获取相关模型类的数据字段信息,并缓存下来。
 
(字段缓存目录:Runtime/Data/_fields)
 
ThinkPHP支持PDO方式,如果要使用PDO方式连接数据库,可以参考下面的设置。
 
我们以项目配置文件定义为例来说明:
 
PHP Code复制内容到剪贴板
  1. return array(
  2. ‘DB_TYPE’=> ‘pdo’,
  3. // 注意DSN的配置针对不同的数据库有所区别 请参考PHP手册PDO类库部分
  4. ‘DB_DSN’=> ‘mysql:host=localhost;dbname=think’,
  5. ‘DB_USER’=>’root’,
  6. ‘DB_PWD’=>”,
  7. ‘DB_PREFIX’=>’think_’,
  8. // 其他项目配置参数………
  9. );
 
使用PDO方式的时候,要注意检查是否开启相关的PDO模块。DB_DSN参数仅对PDO方式连接才有效。

好了,我们介绍的一些连接数据库方法在Thinkphp下也是比较全面的了。大家可以多多尝试不同连接,可以在项目适合的地方使用恰当的数据库连接方式。

ThinkPHP的数据库相关推荐文章:
1、ThinkPHP框架中快捷函数创建模型 M和D的区别
2、THINKPHP数据CURD基本操作方法
3、thinkphp学习笔记入门小知识点分享

ThinkPHP中连接mysql数据库的四种实用和通用的连接方法的更多相关文章

  1. C++连接mysql数据库的两种方法

    本文主要介绍了C++连接mysql数据库的两种方法,希望通过本文,能对你有所帮助,一起来看. 现在正做一个接口,通过不同的连接字符串操作不同的数据库.要用到mysql数据库,以前没用过这个数据库,用a ...

  2. 数据库操作事物的四大特性以及MySQL数据库的四种隔离级别

    1 .事物操作数据库的四大特性(ACID) 1.原子性 (Atomicity) 原子性:就是事物的所包含的所有操作,要么全部成功,要么全部失败回滚. 2.一致性 (Consistency) 一致性:简 ...

  3. MSSQL Server数据库的四种连接方法和sql连接字符串

    MSSQL Server数据库的四种连接方法和sql连接字符串 分类: [ 03 ] C#(131) [ 07 ] SQL Server(68) [ 01 ] .NET(189) 今天用SQL Ser ...

  4. PHP连接MySQL数据库的几种方式

    PHP 5 及以上版本建议使用以下方式连接 MySQL : MySQLi :MySQLi 只针对 MySQL 数据库,MySQLi 还提供了 API 接口. PDO (PHP Data Objects ...

  5. PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)

    PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展 .PHP的mysqli扩展 .PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案. P ...

  6. Oracle连接远程数据库的四种设置方法

    Oracle数据库的远程连接可以通过多种方式来实现,本文我们主要介绍四种远程连接的方法和注意事项,并通过示例来说明,接下来我们就开始介绍 第一种方法: 若oracle服务器装在本机上,那就不多说了,连 ...

  7. php连接MySQL数据库的三种方式(mysql/mysqli/pdo)

    引言 PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展 .PHP的mysqli扩展 .PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案 ...

  8. C#连接Oracle数据库的四种方法

    C#连接数据库的四种方法 在进行以下连接数据库之前,请先在本地安装好Oracle Client,同时本次测试System.Data的版本为:2.0.0.0. 在安装Oracle Client上请注意, ...

  9. PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)--续

    2.PHP与Mysqli扩展,面向过程.对象 <?php $mysql_conf = array( 'host' => '127.0.0.1:3306', 'db' => 'test ...

随机推荐

  1. ultraEdit-32 PHP/HTML智能提示

    原文 ultraEdit-32 PHP/HTML智能提示 高级–>配置–>编辑器–>自动完成–>勾选自动显示……选项,在下面输入框中输入你要求输出多个字符才出现提示,比如 ec ...

  2. javascritpt 原型链

    // 基类 var BaseCalculator = function(){ this.decimalDigits = 2; }; // public BaseCalculator.prototype ...

  3. XShell删除键之类的不正常

    异常处理汇总-开发工具  http://www.cnblogs.com/dunitian/p/4522988.html 一图解决 异常处理汇总:http://www.cnblogs.com/dunit ...

  4. hdoj 4324 Triangle LOVE 【拓扑】

    Triangle LOVE Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) To ...

  5. 12个有趣的c面试题目

    1.gets()函数 问:请找出以下代码里的问题: #include<stdio.h>  int main(void)  {      char buff[10];      memset ...

  6. 3. SQL Server数据库状态监控 - 可用空间

    原文:3. SQL Server数据库状态监控 - 可用空间 数据库用来存放数据,那么肯定需要存储空间,所以对磁盘空间的监视自然就很有必要了. 一. 磁盘可用空间 1. 操作系统命令或脚本.接口或工具 ...

  7. Android多媒体-MediaRecorder 录制音视频

    不多说,直接上代码,有具体凝视 MyAudioRecord.java import java.io.File; import java.io.IOException; import android.a ...

  8. [译]内存中的Java数组是怎么样的

    (文章翻译自What does a Java array look like in memory?) Java中的数组存储了两个中的一个类型:原始类型的类或则是引用类型(比如指针) 当一个对象通过Ne ...

  9. 读书笔记—CLR via C#章节1-2

    这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可以加深 ...

  10. 数据结构二叉树的java实现,包括二叉树的创建、搜索、删除和遍历

    根据自己的学习体会并参考了一些网上的资料,以java写出了二叉树的创建.搜索.删除和遍历等操作,尚未实现的功能有:根据先序和中序遍历,得到后序遍历以及根据后序和中序遍历,得到先序遍历,以及获取栈的深度 ...