简介
由于PHP的数据库存取函数没有标准化,所以我们需要一组函数库或是类别来隐藏不同数据库函数接口间的差异,让我们可以很简单的去切换数据库,而这,就是ADODB的目的。
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这个范例。
另外,如果要撰写一个具有高度可移植性的SQL码,也可以参阅 http://php.weblogs.com/portable_sql 这篇文章。
特色
对熟悉Windows的工程师而言,ADODB很容易使用,因为ADODB里的很多功能和Microsoft的ADO很像。
与其它的PHP数据库类别不同,它们大多集中在处理与 select 指令有关的东西,而ADODB对于 inserts 及 update 也提供额外的支持,并且可以很快的连结到多数据库。所提供的方法更扩及日期的掌握,字符串的连结及字符串标记字符差异处理(在某些数据库间字符串的连结和标记符号是有差异的)
型别对照系统是内建的,所以我们可以设定或描述像CHAR,TEXT及STRING在不同的数据库间其实是相同的资料型别。
更容易去移植,因为所有与数据库相依的程序代码被都隐藏在后端,所以使用者不再需要去移植类别里的逻辑。
支持 PHP4 连结变量,请参考 ADOdb-session.php。
安装
首先要确定你所使用的PHP版本是 4.01pl2 或是之后的版本(因为ADODB使用到了 require_once及include_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
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,也就是关掉这个仿真功能,因为这会耗掉非常多的内存,以做为快取之用。由于这个变量在每次执行时都会检查,所以你可以选择性的使用或不使用。
PHP ADODB 数据库操作入门教程
所有支持$ADODB_FETCH_MODE的数据库都支持 ADODB_FETCH_NUM(以字段顺序存取) 及 ADODB_FETCH_ASSOC(以字段名称存取),两种模式。而将值设为 ADODB_FETCH_DEFAULT(数据库预设模式存取),则是由数据库的功能来决定的,所以不具备可移植性,而 ADODB_FETCH_BOTH(双模式存取) 也一样。
--------------------------------------------------------------------------------
·显示数码图片的EXIF信息 Discuz插件ForDisc
·在PHP中cookie和session的使用总结
·哪个CMS比较好用-Mambo出鞘,谁与争锋?
·在PHP中使用Header()函数介绍
·用PHP实现JS的escape和unescape函数功能
·Cute Editor for PHP 6.0─ 一個所見即所得
·每一個 PHP 開發者都應該認識的十個開發項
·整理的Discuz程序文件目录含义表
·使用PHP伪造sessionid做防刷新功能
·用PHP显示图片的EXIF信息
·显示数码图片的EXIF信息 Discuz插件ForDisc
·在PHP中cookie和session的使用总结
·哪个CMS比较好用-Mambo出鞘,谁与争锋?
·在PHP中使用Header()函数介绍
·用PHP实现JS的escape和unescape函数功能
·Cute Editor for PHP 6.0─ 一個所見即所得
·每一個 PHP 開發者都應該認識的十個開發項
·整理的Discuz程序文件目录含义表
- · 3分钟快速了解 Delphi for PHP 特色 (中文), PDF档
- · 购买Delphi for PHP的五大理由, PDF档
- · Delphi for PHP 使用规格介绍, PDF档
- · Delphi for PHP 問答集 (From CodeGear)
- · Delphi for PHP 产品价格表




