ADODB 是一种 PHP 存取不同类型数据库的抽象层

发布于 2017-11-16 22:13:39 字数 6694 浏览 2640 评论 0

由于 PHP 的数据库存取函数没有标准化,所以我们需要一组函数库或是类来隐藏不同数据库函数接口间的差异,让我们可以很简单的去切换数据库,而这就是ADODB的目的。

ADODB 是一种 PHP 存取不同类型数据库的抽象层

ADODB 目前支持MySQL、Oracle、Microsoft SQL Server、Sybase、Sybase SQL Anywhere、Informix、PostgreSQL、FrontBase、Interbase(Firebird 及 Borland 版本)、 Foxpro、Access、ADO 和 ODBC。ADODB 也有透过 ODBC 成功连结 Progress 及 DB2 的报告,我们希望能有更的人提供驱动接口来支持更多的数据库。

PHP4 支持连结变量(session variables),使用者可以透过 ADODB 储存连结信息,以达成真正的可移植性及弹性,相关的用法及信息请自行参考 ADOdb-session.php 这个范例。

安装

首先要确定你所使用的PHP版本是 4.01pl2 或是之后的版本(因为ADODB使用到了 require_onceinclude_once 两个函数)。解压缩全部的档案到你的Web服务器可以存取的一个目录里。

要测试ADODB你需要一个数据库,开启 testdatabase.inc.php 这个档案,并且修改连结参数,以适合你所使用的数据库。这个程序会建立一个新的资料表在你的数据库中,以支持我们提供的测试程序及范例,就这样,你安装好了。

激活 ADODB

当要执行 ADODB 时,至少有两个档案要被载进来,第一个是 ADOdb.inc.php ,这里面包含了所有数据库类中要被使用的函数。而对数据库实作的程序代码则被置放在 ADOdb-????.inc.php 档案里。

例如说,要连结一个mysql数据库:

include('/path/to/set/here/ADOdb.inc.php');
$conn = &ADONewConnection('mysql');

无论何时你需要连结到一个数据库时,你必需使用 ADONewConnection() 函数建立了一个连结对象。ADONewConnection 接受一个选择性参数, <database-name-here>。如果没有参数被指定,它将会使用被 ADOLoadCode() 所加载的最后一个数据库。 NewADOConnection() 是另一个相同的函数。

当你建立好一个连结对象时,你并没有真的连结上你的数据库。你仍需要使用$conn->Connect() 或者 $conn->PConnect() 两个方法来完成真正的连结。

支持的数据库

名称数据库RecordCount() 支持与否需安装的驱动程序操作系统
accessBMicrosoft Access/Jet. 需要建立一个 ODBC/DSN。Y/NODBCWindows only
adoB一般未经特别指定的数据库系统, 透过ADO,允许不设定 DSN连结,使用OLEDB以提供较佳的效能。视数据库而定ADO or OLEDB providerWindows only
ado_accessBMicrosoft Access/Jet 透过ADO,允许不设定 DSN连结,使用OLEDB以提供较佳的效能。Y/NADO or OLEDB providerWindows only
ado_mssqlBMicrosoft SQL Server 透过ADO,允许不设定 DSN连结,使用OLEDB以提供较佳的效能。Y/NADO or OLEDB providerWindows only
db2CDB2. 可以透过ODBC获得可以信赖的运作效果。Y/NDB2 CLI/ODBC interfaceUnix and Windows
Unix install hints.
vfpAMicrosoft Visual FoxPro
需要建立一个ODBC/DSN
Y/NODBCWindows only
fbsqlCFrontBase.Y?Unix and Windows
ibaseBInterbase 6或更早的版本。有些使用者报告必需使用如下的方式连结

$db->PConnect('localhost:c:/employee.gdb',"sysdba","masterkey")

目前没有支持 Affected_Rows 方法

Y/NInterbase clientUnix and Windows
firebirdCinterbase的Firebird版本Y/NInterbase clientUnix and Windows
borland_ibaseCBorland 的 Interbase 6.5 或更新版Y/NInterbase clientUnix and Windows
informixCInformixY/NInformix clientUnix and Windows
mssqlAMicrosoft SQL Server 7
也可以和 Microsoft SQL Server 2000 运作的很好。
但在日期格式上仍有一些问题。
例如在日期时间的回传值上,就不会回传秒数数值。
Y/NMssql clientUnix and Windows
Unix install howto.
mysqlAMySQL 不支持交易处理Y/NMySQL clientUnix and Windows
mysqlt 或 maxsqlAMySQL 支持交易处理Y/NMySQL clientUnix and Windows
oci8AOracle 8/9 支持比 oracle 驱动程序还多的功能 (例如: Affected_Rows)。
在连结之前,你可能需要先配好环境变量 ORACLE_HOME = ''
有两个方式进行连结,用服务器的IP或服务名称:

PConnect('serverip:1521','scott','tiger','service')
PConnect('', 'scott', 'tiger', 'tnsname')
Y/NOracle clientUnix and Windows
oci8poAOracle 8/9 可携式驱动程序Y/NOracle clientUnix and Windows
odbcA标准 ODBC
用 PConnect('DSN','user','pwd').连结。
depends on databaseODBCUnix and Windows.
Unix hints.
odbc_mssqlC用 ODBC 连接 MSSQLY/NODBCUnix and Windows.
odbc_oracleC用 ODBC 连接 ORACLEY/NODBCUnix and Windows.
oracleC支持旧的 Oracle 7 client API
不支持 $ADODB_FETCH_MODE
Y/NOracle clientUnix and Windows
postgresAPostgreSQL 不支持 LIMIT 指令.YPostgreSQL clientUnix and Windows.
postgres7APostgreSQL 支持 LIMIT 及其它版本 7 功能YPostgreSQL clientUnix and Windows.
sqlanywhereCSybase SQL Anywhere.Y/NSQL Anywhere ODBC client
sybaseCSybase.Y/NSybase clientUnix and Windows
Unix hints

测试状态区的代码说明如下:

  • A=已经经过很多人验证及测试,可靠度最高。
  • B=已经测试并使用了,但可能仍有一些功能没有达成。
  • C=使用者自行配置或试用的驱动程序,可能没有完全支持ADODB的功能。

RecordCount() 支持与否:指的是 RecordCount() 函数是否会回传用SELECT指令取得的记录笔数(不支持时传回 -1)。如果这个字段的值出现了 Y/N ,那表示当全域变量 $ADODB_COUNTER = true 时,会以仿真的方式取得,而这是默认值。要注意的是,如果你预测记录笔数会很大时,最好把这个值设为 false,也就是关掉这个仿真功能,因为这会耗掉非 常多的内存,以做为快取之用。由于这个变量在每次执行时都会检查,所以你可以选择性的使用或不使用。

所有支持 $ADODB_FETCH_MODE 的数据库都支持 ADODB_FETCH_NUM (以字段顺序存取) 及 ADODB_FETCH_ASSOC (以字段名称存取),两种模式。而将值设为 ADODB_FETCH_DEFAULT (数据库预设模式存取),则是由数据库的功能来决定的,所以不具备可移植性,而 ADODB_FETCH_BOTH (双模式存取) 也一样。

相关链接

官方文档:http://adodb.org/dokuwiki/doku.php

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

qq_aHcEbj

文章 0 评论 0

寄与心

文章 0 评论 0

13545243122

文章 0 评论 0

流星番茄

文章 0 评论 0

春庭雪

文章 0 评论 0

潮男不是我

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文