频道直达 - 专题 - 新闻 - 基础 - 高级 - 安装 - 技巧 - 数据库 - 手册 - PHP - Linux - Java - MySQL - Apache - 麻辣堂 - 狼盟 - Rails社群 - 搜索 - 下载 - 开源 - 论坛
PHP开发资源网 主页>>PHP基础教程>> 收藏此文 | 收藏本站 | 设为首页

PHP ADODB 入门教程(10)

来源:www.phpres.com 作者:Angelover 出处:www.phpres.com 2007-7-19 12:44:43 进入讨论组
关 键 词: PHP ADODB 入门教程(10)

自 1.91 版起,这个函数存在于 ADORecordSet 及 ADOConnection两个地方。

MoveNext( )

移动内部指针到下一笔,fields 数组将会自动的更新。如果不能移动,会回传 false 值,其它情况则会回传 true 。

范例 :

$rs = $db->Execute($sql);
if ($rs)
        while (!$rs->EOF) {
                ProcessArray($rs->fields);
                $rs->MoveNext();
        }
Move($to)

移动内部指针到指定的列 ($to) 。 列数是零基的,例如,0是第一列。fields 数组将会自动更新。对于不支持内部卷动的数据库,ADODB将会自动仿真卷动。部份数据库不支持向后卷动。对大多数的数据库言,如果 $to 的位置在 EOF 之后,$to 将会被移动到资料集的最后一笔。有些无名的数据库使用 odbc 时,可能会没有动作。

注意:这个函数使用了绝对寻址,不像 Microsoft 的 ADO。

回传值是 true 或是 false。如果是 false ,这个内部指针在大多数的实际运作上并没有移动,所以 AbsolutePosition() 将会回传指针在执行 Move() 之前最后的位置

MoveFirst()

实际上是呼叫 Move(0) 。注意,有一些数据库并不支持这个函数。

MoveLast()

实际上是呼叫 Move(RecordCount() - 1)。注意,有一些数据库并不支持这个函数。

GetRowAssoc($toUpper=true)

这个函数并不能持续的以理想的方式维持关连数组的内容(每换一笔记录,就要重新执行一次)。使用 $ADODB_FETCH_MODE 共享变量来替代它。

回传一个包含了目前记录的关连式数组,数组的索引值就是字段名。字段名全都是大写的,以便存取。要取得下一笔记录,你要呼叫 MoveNext() 。

范例 :
Array ( [ID] => 1 [FIRSTNAME] => Caroline [LASTNAME] => Miranda [CREATED] => 2001-07-05 )

注意:不要同时使用 GetRowAssoc() 和 $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC 。因为他们有相同的功能,会彼此交互干扰。

AbsolutePage($page=-1)

回传目前的页码,需要先呼叫 PageExecute() / CachePageExecute() 。参考 Example 8 。

AtFirstPage($status='')

如果在第一页,回传 true (1基式),需要先呼叫 PageExecute() / CachePageExecute() 。参考 Example 8 。

AtLastPage($status='')

如果在最后一页,回传 true (1基式),需要先呼叫 PageExecute() / CachePageExecute() 。参考 Example 8 。

Fields($colname)

不鼓励使用,请改以 $ADODB_FETCH_MODE 取代。

当使用原生函数库时,有些数据库函数回传具名及索引双数组(如 MySQL)。GetRowAssoc() 并不回传结合了具名及索引的数组元素。

本函数回传由 $colname 所指栏名,在目前记录里的的字段值。

字段名区分大小写。

FetchRow()

回传目前记录内容的数组,如果是文件尾(EOF),回传 false 。注意:不要把 FetchRow 和 MoveNext() 混用。

用法 :

$rs = $db->Execute($sql);
if ($rs)
        while ($arr = $rs->FetchRow()) {
           # process $arr
        }
FetchInto(&$array)

设定 $array 到目前的记录里。如果在文件尾(EOF),回传 PEAR_Error 对象。如果成功,回传 1 (DB_OK 常数)。

如果 PEAR 未定义,当 EOF 时回传 false 。FetchRow() 很容易使用,请参考之前的例子。

FetchField($column_number)

回传一个对象,包含了所指字段的名称,类别及最大长度。如果最大长度不能被明确决定,将会回传 -1 。 行号是以 0 基为计算起点的,请参考 范例 2 。

FieldCount( )

回传资料集里字段数。

RecordCount( )

回传资料集里的记录笔数。如果无法从数据库驱动程序API里取得正确的数字,ADODB将会把所有的记录内容,存放在内存里,等全部取完后,再回传记录总笔数。这个内存可以藉由设定全域变量 $ADODB_COUNTERECS = false 而被取消(基于执行效能的理由)。当取消后,对某些数据库,RecordCount() 将会回传 -1 。相关支持状况,请参考前面的数据库支持表有详细的说明。

RowCount 和 RecordCount 是同义函数。

PO_RecordCount($table, $where)

回传在资料集里的记录笔数。如果数据库不支持,那么将回传对 $table 资料表下达以 $where 为条件的 SELECT COUNT(*) 指令后回传的值。

$numrows = $rs->PO_RecordCount("articles_table", "group=$group");

会回传数据库执行 SELECT COUNT(*) FROM articles_table WHERE group=$group 的结果。

FetchObject($toupper=true)

回传目前的记录为一个对象。如果 $toupper 为 true ,那么对象字段名将会设为大写。注意:较新的 FetchNextObject() 是取得记录对象较被建议的方式,请参看后续说明。

FetchNextObject($toupper=true)

取得目前的记录成一个对象,并且自动移动到下一个记录。如果在档尾,回传 false 。如果 $toupper 为 true ,那么对象字段名将会设为大写。

$rs = $db->Execute('select firstname,lastname from table');
if ($rs) {
        while ($o = $rs->FetchNextObject()) {
                print "$o->FIRSTNAME, $o->LASTNAME<BR>";
        }
}
在使用 FetchNextObject() 时会影响效能,如果效能很重要,你应该使用 fields[] 数组来存取。

CurrentRow( )

目传目前资料集的记录编号,0 表示是第一笔。

AbsolutePosition( )

和 CurrentRow 是相同的函数,是为了和 ADO 兼容而存在的。

MetaType($nativeDBType[,$field_max_length],[$fieldobj])

设定资生数据库里的原生型别 $nativeDBType 为那一种通用资料型别,以及它的最大长度。请注意,如果长度未知,可以设为 -1 。字段对象可以使用 $fieldobj 传入。这对于像是 mysql 这一类字段对象有较多属性的数据库来说,是很有用的。

使用字段 blobsize 及比较 $field_max_length 去决定目前的字段是否为 blob 。

回传值:

C:  character 字段,应该使用 <input type="text"> 标记来取值。

X: 文字字段(Text) , 长文字字段,使用 <textarea> 标记来显示资料。

B: Blob 字段或者大型的二位对象(像程序,图文件等)。

D: 日期字段

T: 时间字段

L: 逻辑字段(真假值)或位字段

N: 数字字段,包含自动进位、编号、整数、浮点数、实数等。

I: 整数字段

R: 序列字段,包含了序列、自动增进整数,只对被选择的数据库作用。

Close( )

关闭目前的资料集。


--------------------------------------------------------------------------------

function rs2html($adorecordset,[$tableheader_attributes], [$col_titles])
这是一个独立的函数 (rs2heml = recordset to html) ,相当于 PHP 中的 odbc_result_all 函数。本函数会输出一整个 ADORecordSet,$adorecordset 如同一个 HTML表格。$tableheader_attributes 允许你控制表格里的参数如 cellpadding,cellspacing 及 border 等的属性。最后,你可以透过 $col_titles 数组,更换数据库字段名称,使用你自己的字段抬头。这是设计用来快速除错的机制,不是一个好的表格记录浏览器。

要使用这个函数,你必需引入 tohtml.inc.php 。

rs2html 范例:

<?
include('tohtml.inc.php'); # load code common to ADOdb
include('ADOdb.inc.php'); # load code common to ADOdb
$conn = &ADONewConnection('mysql');   # create a connection
$conn->PConnect('localhost','userid','','agora');# connect to MySQL, agora db
$sql = 'select CustomerName, CustomerID from customers';
$rs   = $conn->Execute($sql);
rs2html($rs,'border=2 cellpadding=3',array('Customer Name','Customer ID'));
?>
 

--------------------------------------------------------------------------------

欢迎进入PHP开发资源论坛讨论。
收藏此文】【 】【打印】【关闭
相关文章
图文推荐
论 坛 资 源
PHP开发资源网奋斗目标
阅读排行:
热门技术文档
最新图文档
本站编辑推荐:(本站开通Delphi4PHP专区,欢迎进入论坛交流!)
编缉最近更新文章
网站赞助商
搜索您感兴趣的内容
 
   网站首页 -  网站地图 -  网站合作 -  手册中心 -  通用网址 -  网站论坛 -  网站投稿 -  友情链接 -  帮助中心
版权所有:PHP开发资源网 © 2003-2008 通用网址:PHP资源网 合作媒体: 赛迪网IT技术
互联网违法和不良信息举报中心 | 不良信息举报信箱