ADODB 是一种 PHP 存取不同类型数据库的抽象层 - 文章教程

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

发布于 2017-11-16 字数 7939 浏览 2250 评论 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() 支持与否 需安装的驱动程序 操作系统
access B Microsoft Access/Jet. 需要建立一个 ODBC/DSN。 Y/N ODBC Windows only
ado B 一般未经特别指定的数据库系统, 透过ADO,允许不设定 DSN连结,使用OLEDB以提供较佳的效能。 视数据库而定 ADO or OLEDB provider Windows only
ado_access B Microsoft Access/Jet 透过ADO,允许不设定 DSN连结,使用OLEDB以提供较佳的效能。 Y/N ADO or OLEDB provider Windows only
ado_mssql B Microsoft SQL Server 透过ADO,允许不设定 DSN连结,使用OLEDB以提供较佳的效能。 Y/N ADO or OLEDB provider Windows only
db2 C DB2. 可以透过ODBC获得可以信赖的运作效果。 Y/N DB2 CLI/ODBC interface Unix and Windows
Unix install hints.
vfp A Microsoft Visual FoxPro
需要建立一个ODBC/DSN
Y/N ODBC Windows only
fbsql C FrontBase. Y ? Unix and Windows
ibase B Interbase 6或更早的版本。有些使用者报告必需使用如下的方式连结

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

目前没有支持 Affected_Rows 方法

Y/N Interbase client Unix and Windows
firebird C interbase的Firebird版本 Y/N Interbase client Unix and Windows
borland_ibase C Borland 的 Interbase 6.5 或更新版 Y/N Interbase client Unix and Windows
informix C Informix Y/N Informix client Unix and Windows
mssql A Microsoft SQL Server 7
也可以和 Microsoft SQL Server 2000 运作的很好。
但在日期格式上仍有一些问题。
例如在日期时间的回传值上,就不会回传秒数数值。
Y/N Mssql client Unix and Windows
Unix install howto.
mysql A MySQL 不支持交易处理 Y/N MySQL client Unix and Windows
mysqlt 或 maxsql A MySQL 支持交易处理 Y/N MySQL client Unix and Windows
oci8 A Oracle 8/9 支持比 oracle 驱动程序还多的功能 (例如: Affected_Rows)。
在连结之前,你可能需要先配好环境变量 ORACLE_HOME = ''
有两个方式进行连结,用服务器的IP或服务名称:

PConnect('serverip:1521','scott','tiger','service')
PConnect('', 'scott', 'tiger', 'tnsname')
Y/N Oracle client Unix and Windows
oci8po A Oracle 8/9 可携式驱动程序 Y/N Oracle client Unix and Windows
odbc A 标准 ODBC
用 PConnect(‘DSN’,’user’,’pwd’).连结。
depends on database ODBC Unix and Windows.
Unix hints.
odbc_mssql C 用 ODBC 连接 MSSQL Y/N ODBC Unix and Windows.
odbc_oracle C 用 ODBC 连接 ORACLE Y/N ODBC Unix and Windows.
oracle C 支持旧的 Oracle 7 client API
不支持 $ADODB_FETCH_MODE
Y/N Oracle client Unix and Windows
postgres A PostgreSQL 不支持 LIMIT 指令. Y PostgreSQL client Unix and Windows.
postgres7 A PostgreSQL 支持 LIMIT 及其它版本 7 功能 Y PostgreSQL client Unix and Windows.
sqlanywhere C Sybase SQL Anywhere. Y/N SQL Anywhere ODBC client
sybase C Sybase. Y/N Sybase client Unix 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

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!

关于作者

JSmiles

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

2891 文章
评论
84935 人气
更多

推荐作者

伊面

文章 0 评论

白况

文章 0 评论

七禾

文章 0 评论

亢潮

文章 0 评论

悲念泪

文章 0 评论