mssqlA 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(双模式存取) 也一样。
学习手册范例 1: Select 指令 任务:连接到 Access 的 Northwind DSN,然后在每一列显示头2个字段。(Northwind 北风数据库,在ODBC设定的DSN,是Access的标准范例数据库) 在这个范例中,我们建立一个 ADOConnection 物件,它代表了和数据库的连接。连接是以 PConnect 函数来初始化的,然后会持续的连接着。任何时候我们要查询数据库时,我们就调用 ADOConnection.Execute() 函数,这将会返回一个 ADORecordSet物件。事实上它只是一个指向在fields[]阵列中,目前记录的指标,我们使用MoveNext()来在记录间移动。 注意:另一个很有用的函数 SelectLimit 并没有在这个范例里使用,这个函数允许我们去限制显示的数据笔数。 <?
include(''''ADOdb.inc.php''''); # 载入ADODB
$conn = &ADONewConnection(''''access''''); # 建立一个连接
$conn->PConnect(''''northwind''''); # 连接到 MS-Access 北风数据库
$recordSet = &$conn->Execute(''''select * from products'''');
if (!$recordSet)
print $conn->ErrorMsg();
else
while (!$recordSet->EOF) {
print $recordSet->fields[0].'''' ''''.$recordSet->fields[1].''''<BR>'''';
$recordSet->MoveNext();
}
$recordSet->Close(); # 选择性执行
$conn->Close(); # 选择性执行
?> 在这个例子中,$recordSet返回了存在$recordSet->fields阵列里,目前所指向的记录。以字段编号为索引,起始值为0。我们使用MoveNext()函数来移动到下一笔记录,当到了最后一笔时,EOF属性会被设定为true。当Execute()函数执行有错误时,会返回一个false值,而不是一个recordset物件。 $recordSet->fields[]阵列是由PHP数据库扩充函数库所产生的。有一些数据库扩充函数库仅支持以编号来进行索引,而不支持以字段名为索引。要强迫使用字段名索引,也就是要使用关连式阵列,请使用 $ADODB_FETCH_MODE 全域变量来设定。当一个数据集被Execute()或是SelectLimit()函数建立时,都会保存而且使用储如此类的设定模式。 $ADODB_FETCH_MODE = ADODB_FETCH_NUM;
$rs1 = $db->Execute(''''select * from table'''');
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
$rs2 = $db->Execute(''''select * from table'''');
print_r($rs1->fields); # shows array([0]=>''''v0'''',[1] =>''''v1'''')
print_r($rs2->fields); # shows array([''''col1'''']=>''''v0'''',[''''col2''''] =>''''v1'''') 上面的范例说明,如果要以顺序来存取字段,就将 $ADODB_FETCH_MODE 的值设为 ADODB_FETCH_NUM,要以关连式阵列(以字段名)存取字段,就要将值设为 ADODB_FETCH_ASSOC。 要取得在被选到的记录笔数,你可以使用$recordSet->RecordCount()方法。注意,如果不能确定得到的记录笔数,会返回 -1 。 范例 2: 进阶的 Select 指令(使用 Field 物件)任务:选取一个数据表,显示最前面的二栏。如果第二栏是一个日期或时间型态字段,将它格式化成US格式。 <?
include(''''ADOdb.inc.php'''');
$conn = &ADONewConnection(''''access'''');
$conn->PConnect(''''northwind'''');
$recordSet = &$conn->Execute(''''select CustomerID,OrderDate from Orders'''');
if (!$recordSet)
print $conn->ErrorMsg();
else
while (!$recordSet->EOF) {
$fld = $recordSet->FetchField(1);
$type = $recordSet->MetaType($fld->type);
if ( $type == ''''D'''' || $type == ''''T'''')
print $recordSet->fields[0].'''' ''''.
$recordSet->UserDate($recordSet->fields[1],''''m/d/Y'''').''''<BR>'''';
else
print $recordSet->fields[0].'''' ''''.$recordSet->fields[1].''''<BR>'''';
$recordSet->MoveNext();
}
$recordSet->Cl上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页 [MySql]PHP存取 Mysql 数据乱码终极解决方案 [Web开发]PHP提示Notice: Undefined variable的解决办法 [Web开发]PHP 大小写函数 [Web开发]PHP的sleep函数关闭窗口后是否继续运行? [Web开发]教你如何在PHP开启gzip页面压缩实例介绍 [Web开发]PHP过滤HTML字符串的常用函数使用方法介绍 [Web开发]PHP采集程序常用函数大全 [Web开发]用PHP实现Javascript的escape(),unescape()的方法 [Web开发]常见的PHP截取字符串函数整理 [系统软件]突破Windows 2003 PHP服务器的新思路
|