PHP ADODB 1.99版手册中文翻译(Tripc)
感谢
记事


PHP ADODB 1.99版手册中文翻译
翻译作者:Tripc
------------------

ADODB

PHP在数据库的支持上是很令人称道的,几乎所有的知名数据库系统都有对应的函数群支持,而且支持的很完整。但很不幸的,每一群数据库支持函数无论在名称或参数结构上,都有很大的差异,这使得PHP的系统开发者在面临更换数据库时,总会觉得痛苦万分。难道这个问题就没有解决方法吗?呵呵,当然有,答案就是我现在要介绍的 ADODB 这个PHP对象。

ADODB提供了完整的方法和属性让工程师去控制数据库系统,更棒的是你只要记得它的功能就好了,因为不同的数据库系统,只要修改一个属性值就可以了,ADODB会自动依据设定取用正确的PHP函数。此外,最多再配合数据库系统修改修改SQL指令,你的PHP系统就可以在最短的时间内更换到另一个数据库系统了,如果在撰写程序时,对SQL指令能做妥善规划,那就更快了。

经过以上的介绍,相信你已经对ADODB的功用有所了解,以下为ADODB的详细介绍。

取得ADODB

你可以在 http://php.weblogs.com/ADOdb 取得最新版的ADODB。我在撰写本文时,最新版本是1.99版,版权采BSD-StyleLGPL双轨制,换句话就是Freeware,没有什么限制。但在取得ADODB后,最好还是要看一下相关版权说明及用法,并和本文对照一下,以免错误。

使用ADODB

基本上使用ADODB是相当容易的,取得压缩档后解开,我建议将整个内容都解到ADODB的目录里。然后你可以一边参考本文,一边研究里面的范例,就放在里面的test目录下。

由于ADODB附上的说明十分完整详实,以下的说明大部份来自ADODBreadme.htm,这里不是全部的内容,我把一些我认为没有用的内容都去掉了,像版本差异说明、何撰写支持ADODB的驱动程序等与应用无关的部份。想要了解全部内容的读者还是可以自己去参考 readme.htm


·         简介

·         特色

·         安装

·         激活ADODB

o        ADONewConnection

o        NewADOConnection

·         支持的数据库

·         学习手册

o        范例 1 : Select

o        范例 2 : 进阶 Select

o        范例 3 : Insert

o        范例 4 : 除错及 rs2html 范例

o        范例 5 : MySQL 及选单

o        范例 6 : 一次连结两个数据库

o        范例 7 : 产生更新及新增的SQL指令

o        范例 8 : 用下一笔及上一笔实作卷动

·         客制化错误处理及PEAR错误

·         资料集快取

·         参考手册

o        ADOConnection

§         连结数据库:Connect PConnect

§         执行SQLExecute CacheExecute SelectLimit CacheSelectLimit Prepare PrepareSP GetOne GetRow

§         产生 更新/新增:GetUpdateSQL GetInsertSQL

§         BLOB : UpdateBlob UpdateClob UpdateBlobFile

§         换页/卷页 : PageExecute CachePageExecute

§         清除 : CacheFlush Close

§         交易 : BeginTrans CommitTrans RollbackTrans

§         提取资料 : $ADODB_FETCH_MODE BlankRecordSet

§         字符串 : Concat qstr

§         日期 : DBDate DBTimeStamp UnixDate UnixTimeStamp

§         ""管理器 : Affected_Rows Insert_ID GenID

§         错误处理 : ErrorMsg ErrorNo

§         资料辞典 : MetaDatabases MetaTables MetaColumns MetaColumnNames

§         反对 : Bind (? 没有说明)

o        ADORecordSet

§         取单笔记录 : FetchRow FetchInto FetchObject FetchNextObject GetRowAssoc Fields GetAssoc

§         取全部记录 : GetArray GetRows

§         卷动 : Move MoveNext MoveFirst MoveLast AbsolutePosition CurrentRow AtFirstPage AtLastPage AbsolutePage

§         选单制作 : GetMenu GetMenu2

§         日期 : UserDate UserTimeStamp UnixDate UnixTimeStamp

§         记录信息 : RecordCount PO_RecordSet

§         字段信息 : FieldCount FetchField MetaType

§         清除 : Close

·         rs2html 公用函式说明  范例

简介

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

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

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

另外,如果要撰写一个具有高度可移植性的SQL码,也可以参阅 http://php.weblogs.com/portable_sql 这篇文章。

特色

·         对熟悉Windows的工程师而言,ADODB很容易使用,因为ADODB里的很多功能和MicrosoftADO很像。

·         与其它的PHP数据库类别不同,它们大多集中在处理与 select 指令有关的东西,而ADODB对于 inserts update 也提供额外的支持,并且可以很快的连结到多数据库。所提供的方法更扩及日期的掌握,字符串的连结及字符串标记字符差异处理(在某些数据库间字符串的连结和标记符号是有差异的)

·         型别对照系统是内建的,所以我们可以设定或描述像CHAR,TEXTSTRING在不同的数据库间其实是相同的资料型别。

·         更容易去移植,因为所有与数据库相依的程序代码被都隐藏在后端,所以使用者不再需要去移植类别里的逻辑。

·         支持 PHP4 连结变量,请参考 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:/ibase/employee.gdb', "sysdba", "masterkey")目前没有支持 Affected_Rows 方法

Y/N

Interbase client

Unix and Windows

 

<