范例
1: Select 指令
任务:连结到
Access 的 Northwind DSN,然后在每一列显示头 2 个字段。(Northwind 北风数
据库,在
ODBC 设定的 DSN,是 Access 的标准范例数据库)
在这个范例中,我们建立一个
ADOConnection 对象,它代表了和数据库的连结。连结是以
函数来初始化的,然后会持续的连结着。任何时候我们要查询数据库时,我们就
呼叫
ADOConnection.
() 函数,这将会回传一个 ADORecordSet 对象。事实上它只是
一个指向在
fields[]数组中,目前记录的指针,我们使用
()来在记录间移动。
注意:另一个很有用的函数
制显示的数据笔数。
<?
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。我们使用
()函数来移动到下一笔记录,当到了最后一
笔时,
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->
()方法。注意,如果不能