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. c++中string类的具体解释

    通过在站点上的资料搜集,得到了非常多关于string类使用方法的文档,通过对这些资料的整理和增加一些自己的代码,就得出了一份比較完整的关于string类函数有哪些和如何用的文档了! 以下先罗列出str ...

  2. 登录记住账号和密码小Demo

    读取 // 1.读取沙盒中plist文件 // 1.1.获得沙盒根路径 NSString *home = NSHomeDirectory(); // 1.2.拼接Documents路径 NSStrin ...

  3. fast-json.jar的用法

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

  4. hibernate缓存机制和事务隔离机制

    一级缓存( Session缓存) }         一级缓存的管理 ◦          应用程序调用Session的save().update().saveOrUpdate().get()或loa ...

  5. ANDROID定义自己的观点——模仿瀑布布局(源代码)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 简单介绍: 在自己定义view的时候,事实上非常easy,仅仅须要知道3步骤: 1.測量- ...

  6. DDD分层架构之领域实体(基础篇)

    DDD分层架构之领域实体(基础篇) 上一篇,我介绍了自己在DDD分层架构方面的一些感想,本文开始介绍领域层的实体,代码主要参考自<领域驱动设计C#2008实现>,另外参考了网上找到的一些示 ...

  7. Dotfuscator类重命名方法解析

    Dotfuscator是专业的.NET程序代码混淆工具,拥有重命名.字符串加密.流程模糊.自定义规则和水印等功能,倍受开发人员喜爱.其中类重命名的使用方法非常普遍,涉及到既要保护代码信息,又要在以后能 ...

  8. Mysql基础之字符集与乱码

    原文:Mysql基础之字符集与乱码 Mysql的字符集设置非常灵活 可以设置服务器默认字符集 数据库默认字符集 表默认字符集 列字符集 如果某一个级别没有指定字符集,则继承上一级. 以表声明utf8为 ...

  9. [每日一题] OCP1z0-047 :2013-08-01 正则表达式--- REGEXP_REPLACE 函数

    这题又是考正则表达式,我们先根据题意,操作如下: hr@OCM> col "PHONE NUMBER" for a50 hr@OCM> SELECT phone_num ...

  10. CentOS上搭建java WEB开发环境Tomcat+MySQL+JDK

    对于初学者来说,想在linux系统上搭建一个java web服务器,不知道什么方案可行, 这篇文章主要是告诉这些基础和概念相对薄弱的同学,这样搭建是可行的,大体上没问 题的,出问题也是细节问题.所以此 ...