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. Node.js与MongoDB的基本连接示例

    Node.js与MongoDB的基本连接示例 前提 已经安装了node.js和MongoDB,本文使用的node.js是v0.12.0,MongoDB是3.0.0. 初始化数据 启动MongoDB服务 ...

  2. Codeforces 363A Soroban

    模拟算盘 #include<bits/stdc++.h> using namespace std; int main() { char s[20]; scanf("%s" ...

  3. Sample Page

    This is an example page. It's different from a blog post because it will stay in one place and will ...

  4. C语言中嵌入式SQL语句

    原文:[转载]C语言中嵌入式SQL语句 http://blog.csdn.net/cnlht/archive/2007/12/12/1930960.aspx原文地址 实验内容: 掌握SQL Serve ...

  5. Linux:最终用途cat命令查看不可见的字符

    常,的程序或软件,并没有语法错误,你检查其内容没有发现相关问题.这是时间,因为你用普通的文本编辑软件来查看,有很多的字符显示不出来的,但在最终用途cat命令可以很easy地检測出是否存在这些字符. ~ ...

  6. 4行代码实现js模板引擎

    在平时编码中,经常要做拼接字符串的工作,如把json数据用HTML展示出来,以往字符串拼接与逻辑混在在一起会让代码晦涩不堪,加大了多人协作与维护的成本.而采用前端模板机制就能很好的解决这个问题. 精妙 ...

  7. Spring IOC之基于注解的容器配置

    Spring配置中注解比XML更好吗?基于注解的配置的介绍提出的问题是否这种途径比XML更好.简单来说就是视情况而定. 长一点的答案是每一种方法都有自己的长处也不足,而且这个通常取决于开发者决定哪一种 ...

  8. Ubuntu下编译程序是出现pthread_create未定义错误

    gcc -c node_list.c -o node_list.o gcc -lpthread sim.o cli.o list.o node_list.o -o sim.exe sim.o: In ...

  9. CruiseControl.Net全面实现持续集成

    使用CruiseControl.Net全面实现持续集成   持续集成想必大家很多人都听说过,甚至都实践过,最近我又一次亲历了一次持续集成,现将我的经验分享给大家.关于持续集成的理论在本文概不涉及,本文 ...

  10. Linq to NHibernate入门示例

    Linq to NHibernate入门示例 NHibernate相关: 09-08-25连贯NHibernate正式发布1.0候选版 09-08-17NHibernate中一对一关联的延迟加载 09 ...