PHP 数据库驱动、连接数据不同方式学习笔记
阅读原文时间:2024年06月17日阅读:2

相关学习资料

http://www.php.net/manual/zh/refs.database.php
http://www.php.net/manual/zh/internals2.pdo.php
http://bbs.phpchina.com/thread-184537-1-1.html
http://www.metsky.com/archives/660.html
http://www.phpbuilder.com/
http://www.w3school.com.cn/php/php_db_odbc.asp
https://www.ibm.com/developerworks/cn/opensource/os-php-odbc/
http://blog.csdn.net/deflag/article/details/743597
http://www.informit.com/articles/article.aspx?p=31839&seqNum=3
http://zh.wikipedia.org/wiki/Berkeley_DB
http://blog.csdn.net/zuiaituantuan/article/details/5996376

目录

. PHP数据库驱动简介
. PHP连接数据库的不同方式

1. PHP数据库驱动简介

驱动是一段设计用来于一种特定类型的数据库服务器进行交互的软件代码。驱动可能会调用一些库。类似于Java中的数据库驱动的概念

. JDBC-ODPC桥:
它将JDBC API映射到ODPC API。再让JDBC-ODPC调用数据库本地驱动代码(也就是数据库厂商提供的数据库操作二进制代码库,例如Oracle中的oci.dll)
. 本地API驱动
直接将JDBC API映射成数据库特定的客户端API,即通过客户端加载数据库厂商提供的本地代码库(C/C++等)
. 网络协议驱动(主流)
这种类型的驱动给客户端提供了一个网络API,客户端上的JDBC驱动程序使用套接字(Socket)来调用服务器上的中间件程序,后者在将其请求转化为所需的具体API调用。
. 本地协议驱动(主流)
这种类型的驱动使用Socket,直接在客户端和数据库间通信。它是一种直接与数据库实例交互的JDBC
这种驱动是智能的,它知道数据库使用的底层协议,也是目前最主流使用的JDBC驱动,我们本章的重点就是它

而对于PHP来说,同样主流使用的也是网络协议驱动、本地协议驱动,即MySQL客户端库、MySQL Native驱动库。 这些库实现了用于和MySQL数据库服务器进行交互的底层协议。
数据库驱动位于PHP和数据库进行通信的最底层,不同的数据库厂商都会在基于某个框架的前提下实现自己的驱动,用以提供基本功能、以及特定数据库的高级功能。

在驱动层之上是"连接器"、或者是适配器抽象层,用于PHP代码和数据库进行连接,程序员可以使用PDO(PHP Database Object)、或者直接使用扩展接口(mysql、mysqli)这些暴露出来的API与底层数据库进行通信。

aaarticlea/png;base64,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" alt="" />

数据库厂商提供的底层数据库驱动

mysql: http://www.mysql.com/products/connector/
oracle: http://www.oracle.com/technetwork/indexes/downloads/index.html#database
sqlserver: http://msdn.microsoft.com/zh-cn/library/cc296170(SQL.90).aspx

文件型数据库

文件型是一种基于文件的数据库引擎,而且使用文件I/O(输入/输出)函数来存储和读取来自磁盘上文件的数据库。它普遍也比关系型数据库(例如Mysql)小很多很多(例如典型的文件型数据库
SQLite命令行版本的大小小于200KB),同时,文件型数据库而且支持你所熟悉的大部分SQL命令,同时具有易于携带的特点

接下来,我们以上面这张大图作为开始,逐一学习PHP连接数据库的不同方式、以及它们在不同业务场景下的优缺点

2. PHP连接数据库的不同方式

0x1: 使用扩展API接口与数据库通信

PHP代码是由一个核心,一些可选扩展组成了核心功能。PHP 的MySQL相关扩展,比如mysqli,mysql都是基于PHP扩展框架实现的。

展一个典型的作用就是暴露一个API给PHP程序员,允许扩展自己的功能可以被程序员使用。当然,也有一部分基于PHP扩展框架
开发的扩展不会给PHP程序员暴露API接口。比如说PDO
MySQL驱动扩展,就没有向PHP程序员暴露API接口,但是向它上层的PDO层提供了一个接口。

关于PHP扩展的编写请参阅另一篇博文
http://www.cnblogs.com/LittleHann/p/3562259.html

在实际编程中,使用频度最多的还是以扩展API的方式去连接数据库

extension=php_mysql.dll

这 是设计开发允许PHP应用与MySQL数据库交互的早期扩展。mysql扩展提供了一个面向过程的接口,并且是针对MySQL4.1.3或更早版本设计 的。因此,这个扩展虽然可以与MySQL4.1.3或更新的数据库服务端 进行交互,但并不支持后期MySQL服务端提供的一些特性
mysql扩展的源代码在PHP扩展目录ext/mysql下

\\n"; while ($line = mysql\_fetch\_array($result, MYSQL\_ASSOC)) { echo "\\t\\n"; foreach ($line as $col\_value) { echo "\\t\\t$col\_value\\n"; } echo "\\t\\n"; } echo "\\n"; // 释放结果集 mysql\_free\_result($result); // 关闭连接 mysql\_close($link); ?>

extension=php_mysqli.dll

mysqli扩展,我们有时称之为MySQL增强扩展,可以用于使用MySQL4.1.3或更新版本中新的高级特性。mysqli扩展在PHP 5及以后版本中包含。
mysqli扩展有一系列的优势,相对于mysql扩展的提升主要有:

. 面向对象接口
. prepared语句支持(即参数编译预处理,可以有效防御SQL注入的发生)
. 多语句执行支持
. 事务支持
. 增强的调试能力
. 嵌入式服务支持
. 在提供了面向对象接口的同时也提供了一个面向过程的接口。

mysqli扩展是使用PHP扩展框架构建的,它的源代码在PHP源码目录下的ext/mysqli中

prepare($sql); $name = $\_GET\['name'\]; $pass = $\_GET\['pass'\]; //add parameters to sql query $cmd->bind\_param("ss", $name, $pass); $cmd->execute(); $cmd->bind\_result($result); $cmd->fetch(); if($result) { var\_dump($result); } ?>

mysqli除了可以使用参数编译预处理来进行数据库通信,同时也兼容使用面向过程的编码方式

PHP还支持很多其他的数据库连接扩展,使用方法都类似,只要遵循函数调用规范即可,更多详情请参阅

http://www.php.net/manual/zh/refs.database.php

0x2: 使用PDO抽象层与数据库通信

PDO(PHP 数据对象 PHP Database Object),是PHP应用中的一个数据库抽象层规范。PDO提供了一个统一的API接口可以使得你的PHP应用不去关心具体要连接的数据库服务器系统 类型。也就是说,如果你使用PDO的API,可以在任何需要的时候无缝切换数据库服务器,比如从Firebird到MySQL,仅仅需要修改很少的PHP 代码。
其他数据库抽象层的例子包括Java应用中的JDBC以及Perl中的DBI。

注意: 利用 PDO 扩展自身并不能实现任何数据库功能;必须使用一个具体数据库的PDO驱动来访问数据库服务(它只是一个接口规范)

但是反过来说,一个接口提供的兼容性越强,它的定制性、特异性就相应越弱(这很容易理解),PDO接口API的主要缺点是会限制让你不能使用MySQL服务端提供所有的数据库高级特性。比如,PDO不允许使用MySQL支持的多语句执行。

在PHP5中,PDO目前已经支持大量数据库,并且在PHP6中将作为默认数据库连接方式:

. sqlite
. mysql
. pgsql
. mssql

PDO是基于PHP扩展框架实现的,它的源码在PHP源码目录的ext/pdo下

再次强调,PDO只是一个接口规范,它自身并不实现任何的数据库功能,程序员必须使用一个具体数据库的"PDO驱动"来访问特定的数据库

extension=php_pdo_mysql.dll

'SET NAMES utf8',); $dsn='mysql:host=' . $dbhost . ';port=3306;dbname=' . $dbname; try { $dbhdl = new PDO($dsn, $dbusr, $dbpwd, $opt); //Display exception $dbhdl->setAttribute(PDO::ATTR\_ERRMODE,PDO::ERRMODE\_EXCEPTION); } catch (PDOExceptsddttrtion $e) { //return PDOException print "Error!: " . $e->getMessage() . "
"; die(); } $dbstm = $dbhdl->query('SELECT \* from p8\_ad\_user LIMIT 0,1'); $rows = $dbstm->fetchAll(PDO::FETCH\_ASSOC);//$rows = $dbhdl->Fetch(); print\_r($rows); ?>

extension=php_pdo_pgsql.dll

"; } catch (Exception $e) { echo "Unable to connect: " . $e->getMessage() ."

"; } $dbh->beginTransaction(); $query = "SELECT \* from p8\_ad\_user LIMIT 0,1"; $dbh->query($query); $query = "FETCH ALL IN \\"$cursor\\""; echo "begin data

"; foreach ($dbh->query($query) as $row) { echo "$row\[0\] $row\[1\] $row\[2\]
"; } echo "end data"; ?>

这里只以Mysql、PostGreSQL为例,事实上,PDO这种抽象层方式可以访问目前主流的大多数的数据库,并且PDO将成为PHP6的默认数据库连接方式,更多详情请参阅

http://www.php.net/manual/zh/book.pdo.php

0x3: 使用ODBC抽象层与数据库通信

ODBC是一种应用程序编程接口(Application Programming Interface,API),使我们有能力连接到某个数据源(比如一个MS Access 数据库)

试图通过编程语言和数据库查询访问(SQL标准化)来标准化连接方法,比如功能和配置。
ODBC的作用是充当接口或连接器,它具有双重设计目标:

. 首先,对于ODBC 系统,它充当的是编程语言系统
. 其次,对于数据存储系统,它充当的是 ODBC 系统。

所 以,ODBC 需要一个"对ODBC而言是编程语言"的驱动程序(例如PHP-ODBC库)和一个"对数据存储系统而言是ODBC"的驱动程序(比如 MySQL-ODBC库)。除了ODBC系统本身之外,ODBC还可以处理数据源的配置,允许数据源和编程语言之间存在模糊性。
和之前学习的扩展API接口、PDO略有不同的是,使用ODBC连接数据库要稍微麻烦一点(至少我个人这么觉得),这个"麻烦"体现在我们需要对目标数据库服务器的操作系统进行一些配置,即创建ODBC数据源,然后才可以进行ODBC连接
创建到达 MS Access 数据的 ODBC 连接的方法:

. 在控制面板中打开管理工具
. 双击其中的数据源 (ODBC)图标
. 选择系统 DSN 选项卡
. 点击系统 DSN 选项卡中的"添加"按钮
. 选择 Microsoft Access Driver。点击完成
. 在下一个界面,点击“选择”来定位数据库
. 为这个数据库取一个数据源名 (DSN)
. 点击确定

code:

"; echo "Companyname"; echo "Contactname"; while (odbc_fetch_row($rs)) { $username = odbc_result($rs, "username"); $password = odbc_result($rs, "password"); echo "$username"; echo "$password"; } odbc_close($conn); echo ""; ?>

0x4: 使用DBX与数据库通信

PHP本身内置了DBX函数,DBX模块是一个数据库抽象层(DBX中的"X"就表示其所能支持的X种数据库)。DBX函数允许你访问所有DBX支持的数据库。
DBX支持下列数据库:

. Mysql
. ODBC
. PgSQL
. Mssql(Microsoft SQL Server)
. Fbsql

download:

http://pecl.php.net/package/dbx
http://rpmfind.net/linux/rpm2html/search.php?query=php-dbx

code:


A PHP-DBX URL Organizer

<?
/*****
* TABLE DEFINITION FOR THIS EXAMPLE:
* create table URLS (
* url VARCHAR(128) not null,
* description TEXT,
* primary key (url));
*****/
//define $MODULE as DBX_MYSQL, DBX_MSSQL, DBX_PGSQL, or your supported database
$MODULE = DBX_PGSQL;
$server = "localhost";
$user = "root";
$password = "";
$database = "company";
/* FUNCTIONS */
function get_urls($dbconn, $sql)
{
$result = @dbx_query($dbconn, $sql);
if ( $result == )
{
echo dbx_error($dbconn);
}
else
{
return $result;
}
}

function url($action, $dbconn, $url, $description)
{
if($action == "add")
{
$sql = "insert into URLS values('$url', '$description')";
}
elseif($action == "delete")
{
$url = urldecode($url);
$sql = "delete from URLS where URL = '$url'";
}
$result = @dbx_query($dbconn, $sql);
if ( $result == )
{
echo "

ERROR ADDING URL: " . dbx_error($dbconn);
}
else
{
print("

$action : $url succeeded!

");
}
}

/*** MAIN ***/
$dbconn = dbx_connect($MODULE, $server, $database, $user, $password) or die("CANNOT CONNECT TO DATABASE");
?>

PHP DBX URL Organizer

Add a URL:
URL: Description:


data) == )
{
?>

Sorry, there are no URLs in the database. You should add some.

data); $i++) { ?>
URL Description 
data\[$i\]\['url'\]?>>data\[$i\]\['url'\]?> data\[$i\]\['description'\]?> data\[$i\]\['url'\])?>>delete




0x5: 使用DBA(Database (dbm-style) Abstraction Layer)与数据库通信

PHP的DBA抽象层是用来支持Berkeley DB这种文件型数据库的。

These functions build the foundation for accessing Berkeley DB style databases.

在柏克莱的BSD系列操作系统中,有个简单的数据库结构,它以数个文件组成超小型的数据库系统,架构成抽象层(abstraction layer)的DBA数据库。
目前PHP支持的DBA数据库包括

. DBM: 柏克莱发展的最早期DBA数据库
http://en.wikipedia.org/wiki/Dbm
. NDBM: 较新且较有弹性的DBA
http://en.wikipedia.org/wiki/NDBM
. GDBM: GNU 发展的DBA
ftp://ftp.gnu.org/pub/gnu/gdbm/
. DB2: 由Sleepycat软件开发的DB2(非IBM的DB2)
http://www.openldap.org/lists/openldap-software/199905/msg00009.html
. CDB: 这是qmail作者开发快速可靠的DBA
http://pobox.com/~djb/cdb.html

安装好DBA后,使用如下代码进行连接

3. 后记

以上就是PHP连接数据库的不同方式的学习,通过本文的学习,我们了解到一点

目前PHP开发中主流使用的连接数据库的技术是
. Mysql扩展API
. Mysqli扩展API
. PDO抽象层

下一步希望做的事

. 研究一下PHP和mysql进行交互的协议驱动的底层原理
. 尝试编程简单的通信协议驱动

Copyright (c) 2014 LittleHann All rights reserved