background image

范例

 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

()方法。注意,如果不能