使用PDO连接多种数据库

在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官方文档。

时间: 2024-08-12 00:50:29

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

如何在PHP5中通过PDO连接SQLite3数据库

通过PHP跟PDO配置SQLite数据库是一件很繁琐的事情,经过一下午的研究,终于理清了里面的思路.现在拿出来跟大家共享.初学,错误请指出. 首先我们先选择要使用的web server 软件,由于从兼容性跟性能方面的需求,我选择了目前来说最新版的apache. 第二步,我们要使用目前最新版本的PHP zip package .这里提示大家一下,经过我痛苦的反复的实验跟查看资料,如果大家想要使用PDO扩展连接到SQLite数据库的话,请你一定不要选择安装包,因为它不支持很多PHP的扩展库文件. 第

PDO连接mysql数据库

1.PDO简介 PDO(PHP Data Object) 是PHP 5 中加入的东西,是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接和处理,什么 php_mysql.dll.php_pgsql.dll.php_mssql.dll.php_sqlite.dll等等. PHP6中也将默认使用PDO的方式连接,mysql扩展将被作为辅助 2.PDO配置 PHP.ini中,去掉"extension=php_pdo.dll"前面

//使用PDO连接mysql数据库

<?php class pdo_con{ var $dsn = 'mysql:dbname=test; host:127.0.0.1'; var $user = 'root'; var $password = ''; var $opt = array(PDO::ATTR_PERSISTENT=>true); var $dbh; function __construct(){ try{ $this->dbh = new PDO($this->dsn,$this->user,$t

php使用PDO连接mysql数据库

<?php $dsn='mysql:host=localhost;dbname=mssc'; $user='root'; $password=''; $status=1; try { $sql='select * from onethink_order where status=:status'; $dbh=new PDO($dsn,$user,$password); $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $

PDO连接mysql和pgsql数据库

PDO连接mysql数据库 1 <?php 2 $dsn="mysql:host=localhsot;dbname=lamp87"; 3 $user="root"; 4 $passwd="123"; 5 $m = new PDO($dsn,$user,$passwd); 6 $stmt = $m->query("select * from stu"); 7 $rows = $stmt->fetchAll();

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

PDO是什么呢? 通俗说就是别人写的一个“数据库操作工具类”,它非常强大,可以应对市面上几乎所有主流数据库, 具体应用时候有这样一个关系: 即,要操作某种数据,就得去“打开”对应的pdo引擎. 在php.ini的配置文件中,无非就是一个“模块”而已,我们只需要把分号删掉就表示开启!如下: 改为: 使用pdo连接mysql数据库 $dsn = "mysql:host=服务器地址/名称:port=端口号:dbname=数据库名"; $opt = array(PDO::MYSQL_ATTR_

PHP连接MySQL数据库的几种方法

1.最简单的方式-mysql(面向过程) <?php $con = mysql_connect("localhost","root","password"); $select_db = mysql_select_db('test'); if (!$select_db) { die("could not connect to the db:\n" . mysql_error()); } //查询代码 $sql = &quo

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

PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展 .PHP的mysqli扩展 .PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案. PHP的MySQL扩展是设计开发允许php应用与MySQL数据库交互的早期扩展.MySQL扩展提供了一个面向过程的接口,并且是针对MySQL4.1.3或者更早版本设计的.因此这个扩展虽然可以与MySQL4.1.3或更新的数据库服务端进行交互,但并不支持后期MySQL服务端提供的一些特性.由于太古老,又

PDO面向对象操作数据库服务器

1.PDO是PHP新版中推荐的基于面向对象操作数据库服务器的方式. 开启PDO_mysql相关扩展:在php.ini中修改extension=php_pdo_mysql.dll 重启apache 2.PDO操作数据库的基本使用步骤 连接,认证,发送SQL,等待mysql服务器的执行结果,处理执行结果 3.pdo操作数据库的代码: <?php //实例化PDO对象 $dsn='mysql:host=localhost;port=3306;dbname=php34'; $username='root