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. fast-json.jar的用法

    fast-json.jar 解析json数据:一种json数据解析方式是这种,点击这里下载jsonfast.jar+fastjsonAPI文档 [ { "id": 6378, &q ...

  2. MVC验证05-自定义验证规则、验证2个属性值不等

    原文:MVC验证05-自定义验证规则.验证2个属性值不等 本文体验2个属性值不等.即当一个属性输入值,另外一个属性输入的值不能和第一个属性值相等.相关文章包括: MVC验证01-基础.远程验证   M ...

  3. SQL 无限级分类语句

    原文:SQL 无限级分类语句 原表数据为: 此处用到了with关键字,在程序中也可以用递归实现,但觉得还是没有一条sql方便 with tb (ID,Name,ParentID,Sort) as( s ...

  4. 微信应用号开发知识贮备之Webpack实战

    天地会珠海分舵注:随着微信应用号的呼之欲出,相信新一轮的APP变革即将发生.作为行业内人士,我们很应该去拥抱这个趋势.这段时间在忙完工作之余准备储备一下这方面的知识点,以免将来被微信应用号的浪潮所淹没 ...

  5. 让Windows 8 / 8.1 以及 Windows Server 2012 / 2012 R2的桌面,显示我的电脑图标

    cmd ->  运行[rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0],然后勾上[我的电脑]即可.

  6. Visual Studio 2010 单元测试之一---普通单元测试

    原文:Visual Studio 2010 单元测试之一---普通单元测试 本文以Visual Studio 2010为例,来介绍如何在Visual Studio里面进行单元测试. 首先来介绍普通单元 ...

  7. C语言实现全排列

    实现全排列,递归实现 #include <stdio.h> #include <stdlib.h> ; void swap(int *a, int *b) { int m; m ...

  8. leetcode第16题--3Sum Closest

    Problem:Given an array S of n integers, find three integers in S such that the sum is closest to a g ...

  9. postal邮件发送(三):以附件形式显示图片

    前言 上篇提到如果邮件中有图片的话,可以使用 @Html.EmbedImage("~/Content/postal.png") 这种方式,但是经过测试发现,在outlook中如果有 ...

  10. 查看mysql状态常用命令

    最近服务器上mysql有些奇奇怪怪的问题,可惜我不是专业的dba,为了加深自己对mysql的了解,先从基础的查看mysql状态命令看起吧. 命令: show status; 命令: show stat ...