在PHP 5之前,想要连接MySQL数据库就需要使用mysql或mysqli等一系列函数来操作数据库。例如,我们使用mysql系列数据库函数进行查询操作,对应的示例代码如下:

<?php
//创建数据库连接
$link = mysql_connect('127.0.0.1', 'username', 'password') or die('连接数据库失败!');
mysql_select_db('test', $link); //选择指定的数据库
$res = mysql_query('SELECT id, body FROM demo', $link);
while ($row = mysql_fetch_row($res)) {
echo "id=$row[0],body=$row[1]<br/>";
}
mysql_free_result($res);
mysql_close($link);
?>

同样的,如果我们要使用PHP连接Oracle、DB2或者其他数据库,如上述代码所示一样,也需要使用到诸如db2_connect、db2_fetch_row、db2_close、oci_connect、oci_fetch_row、oci_close等许多以对应数据库开头的PHP函数。

如果我们的程序中有连接多个数据库的需要,我们就必须编写对应的操作不同数据库的多个工具类(或函数)。显然,这样的数据库访问API对PHP开发人员来说显得并不友好,给我们开发涉及多个数据库的程序徒增了许多烦恼。

不过,从PHP 5版本之后,这种状况得以改善。在 PHP 5及其后的版本中,PHP为我们提供了一套全新的数据库访问API扩展——PHP数据对象(PDO)。PDO扩展库为PHP访问数据库定义了一个轻量级的一致接口。它是一个抽象的数据访问接口,我们可以方便地使用它来统一操作各种不同的数据库。例如,我们以PDO方式再次重写上述示例,代码如下:

<?php

$type = 'mysql'; //数据库类型
$db_name = 'test'; //数据库名
$host = '127.0.0.1';
$username = 'root';
$password = 'ready';

$dsn = "$type:host=$host;dbname=$db_name";
try {
$pdo = new PDO($dsn, $username, $password);
} catch (Exception $e) {
die('连接数据库失败!');
}
$stmt = $pdo->query('SELECT id, body FROM demo');
while ($row = $stmt->fetch()) {
echo "id=$row[0],body=$row[1]<br/>";
}
$pdo = null;
?>

此时,如果我们需要将数据库从MySQL迁移到DB2或者Oracle上,PHP程序中对应的改动就非常简单,其他地方无需多作更改,我们只需要将变量$type设置为ODBC或者OCI即可。
备注

到目前为止,PHP PDO扩展连接DB2,需要以ODBC方式连接,因此$type需设置ODBC。

PHP PDO扩展库只是一个数据访问的抽象接口,如果要连接不同的数据库,需要添加实现了PDO接口的对应数据库驱动。当然,PHP已经给我们准备好了一些数据库驱动扩展程序(存放在PHP安装目录/ext目录下),例如php_pdo_mysql.dll(用于MySQL)、php_pdo_oci.dll(用于Oracle)、php_pdo_odbc.dll(用于以ODBC形式访问的数据库)。虽然不同数据库驱动的底层实现不一样,但是对于我们开发人员来说,却是使用相同的方式来访问数据库,PDO在中间已经帮我们做了相应的转换处理工作。

在php.ini配置文件中,官方提供的默认配置并没有启用pdo扩展(mysql、mysqli扩展也没有启动,我们需要在php.ini中启用对应的pdo扩展库:

;需要使用何种数据库,就去掉配置文件对应行前面的注释符号";"
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll

更多PDO的相关用法,请参考PHP官方文档。

使用PDO连接多种数据库的更多相关文章

  1. PDO连接mysql数据库

    1.PDO简介 PDO(PHP Data Object) 是PHP 5 中加入的东西,是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接 ...

  2. //使用PDO连接mysql数据库

    <?php //使用PDO连接mysql数据库 class pdo_con{     var $dsn = 'mysql:dbname=test; host:127.0.0.1';     va ...

  3. php之PDO连接mysql数据库,增删改查等等操作实例

    我们使用传统的 mysql_connect .mysql_query方法来连接查询数据库时,如果过滤不严就有SQL注入风险,导致网站被攻击. 虽然可以用mysql_real_escape_string ...

  4. QT连接多种数据库f方法及测试

    QT提供了对多种数据库的访问支持,对SQL Server也可以通过ODBC来进行访问.要想顺利访问SQL Server. 首先要保证以下几点:1. QT编译时已经编译了QtSql2. 编译了ODBC插 ...

  5. PDO连接mysql数据库加载慢

    今天在使用PDO连接mysql操作数据库的时候,发现速度特别慢,都1~2s的时间,不知道怎么回事,后来一步一步排除到new PDO 导致过慢的原因, 这个尴尬了...,调试了半天都没想到问下度娘,才知 ...

  6. php使用PDO连接mysql数据库

    <?php $dsn='mysql:host=localhost;dbname=mssc'; $user='root'; $password=''; $status=1; try { $sql= ...

  7. PDO连接mysql和pgsql数据库

    PDO连接mysql数据库 <?php $dsn="mysql:host=localhsot;dbname=lamp87"; $user="root"; ...

  8. php类模块引擎PDO操作MySQL数据库简单阐述

    PDO是什么呢? 通俗说就是别人写的一个“数据库操作工具类”,它非常强大,可以应对市面上几乎所有主流数据库, 具体应用时候有这样一个关系: 即,要操作某种数据,就得去“打开”对应的pdo引擎. 在ph ...

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

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

随机推荐

  1. BZOJ2301: [HAOI2011]Problem b 莫比乌斯反演

    分析:对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 然后对于求这样单个的gcd(x,y)=k的, ...

  2. 分割函数和根据Id串返回名字

    需求:函数传入一个字符串参数 例如  123-456 将这个字符串123-456拆成两个值 123   456,在通过两个值分别查出数据(例如 张三  李四),拼接成     张三-李四 --声明变量 ...

  3. oracle rac存储安装

    oracle rac 10.2 的在 linux 上的存储选项 博客分类: Oracle OracleLinux项目管理配置管理  Oracle 集群需要存储的软件和数据 项目 内容 最少磁盘空间 C ...

  4. HDU 1114 iggy-Bank(完全背包)

    水 给出小猪钱罐的重量和装满钱后的重量,然后是几组数据,每组数据包括每种钱币的价值与重量 要求出重量最少能装满钱罐时的最大价值 #include<iostream> #include< ...

  5. sunlime操作

    ctrl+p 查找文件  @进行符号查找ctrl+h 替换文件 选中字符以后多次按 ctrl+D 跳过则按 ctrl+Kctrl+shift+d 复制多行alt+f3 多选 ctrl+shift+p ...

  6. 如何禁止掉SharePoint页面个性化(网站操作-编辑页面)

    使用SharePoint Designer打开,或者创建一个新的Master Page,找到SPWebPartManager控件,如下所示,修改它的属性“Personalization-Enabled ...

  7. Spark源码的编译过程详细解读(各版本)

    说在前面的话   重新试多几次.编译过程中会出现下载某个包的时间太久,这是由于连接网站的过程中会出现假死,按ctrl+c,重新运行编译命令. 如果出现缺少了某个文件的情况,则要先清理maven(使用命 ...

  8. 跟我一起写Makefile:MakeFile介绍

    makefile 介绍 make命令执行时,需要一个 makefile 文件,以告诉make命令如何去编译和链接程序. 首先,我们用一个示例来说明makefile的书写规则.以便给大家一个感性认识.这 ...

  9. SQL Server:OA权限管理设计的实现 下

    SQL Server:OA权限管理设计的实现 下   OA系统权限管理设计方案     不同职责的人员,对于系统操作的权限应该是不同的.优秀的业务系统,这是最基本的功能.     可以对“组”进行权限 ...

  10. 史上最全的ASP.NET MVC路由配置,以后RouteConfig再弄不懂神仙都难救你啦~

    继续延续坑爹标题系列.其实只是把apress.pro.asp.net.mvc.4.framework里的CHAPTER 13翻译过来罢了,当做自己总结吧.内容看看就好,排版就不要吐槽了,反正我知道你也 ...