转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
PHP ADODB1.99版手册 (修正版)         ★★★★

PHP ADODB1.99版手册 (修正版)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:7532 更新时间:2009/4/23 10:41:03
当一个SQL指令成功的被 ADOConnection->Execute($sql)执行后,一个 ADORecordSet 物件会被返回回来。这个物件提供了一个虚拟的指标,所以我们可以移动它,从一笔到一笔。也提供一些函数,以取得字段信息和字段类别,并有协助函数去格式化结果,以展示给使用者看。

ADORecordSet 属性

fields: 包含了目前记录的阵列。不是关连式阵列,但它的索引值是从 0 到 字段数 - 1。请参考函数 Fields ,这个函数的动作就像是一个关连式阵列。

dataProvider: 连接数据库的底层机制,正常设定为 native ,除非是使用 odbcado

blobSize: 一个 char , string 或者 varchar object 在被转成 Blob 前的最大长度(Blob 在显示时应该使用 textarea)。其它请参考 MetaType 函数。

sql: 保存了建立本数据集所使用的 sql 指令。

canSeek: 如果 Move() 函数有作用,会被设成 true 。

EOF: 当指标被移动到最后一笔时,这个值会被设定成 true 。

ADORecordSet 函数

ADORecordSet( )

建构函数。一般来说你不需要自己调用这个函数。

GetAssoc([$force_array])

如果字段数大于 2 ,那么从数据集中产生一个关连式阵列。这个阵列是从目前的指标起一直到档尾(EOF)。这个数据集的第一个字段会成为阵列的索引。如果字段数刚好是2,当这阵列被每一个键值所建立时,那么索引会直接对应到值,除非  $force_array 被设成 true 。

范例:

以下是我们数据集的数据:

列1: Apple, Fruit, Edible
列2: Cactus, Plant, Inedible
列3: Rose, Flower, Edible

GetAssociation 将会产生一个如下的关联式阵列:

Apple => [Fruit, Edible]
Cactus => [Plant, Inedible]
Rose => [Flower,Edible]

返回值:

关连式阵列,错误则传回 false 。

GetArray([$number_of_rows])

从目前指标位置产生一个阵列,索引值从 0 到 $number_of_rows - 1 。如果 $number_of_rows 没有被定义,那会到档尾(EOF)。

GetRows([$number_of_rows])

是 GetArray() 的同义函数,是为了与 Microsoft ADO 相容才有的。

GetMenu($name, [$default_str=''''''''], [$blank1stItem=true], [$multiple_select=false], [$size=0], [$moreAttr=''''''''])

建立一个 HTML 选单  (<select><option><option></select>) 。数据集的第一栏 (fields[0]) 将会作为 <option> 里的显示字串。如果数据集有超过一个以上的字段,第二栏 (fields[1]) 将设定成返回给WEB服务器的值(即 value)。选单将被给予 $name 为名称。

如果 $default_str 被定义了,那么如果 $default_str == fields[0] , 那么这个字段将会被选取。 如果 $blank1stItem 为 true ,那第一个选项将会是空值。$Default_str 在对于可多选清单盒时,可以是一个阵列。

要产生一个选单区,设定 $size 为一个非 0 值(或者传入 $default_str 为一个阵列)。如果 $multiple_select 为 true ,那么一个选单区将会被产生成有 $size 个项目可见的选单(如果 $size ==  0 那预设为 5 个),而且ADODB将会返回一个阵列给服务器。最后,你可以使用 $moreAttr 去增加其它的属性,像是 javascript 或样式表。

选单范例 1: GetMenu(''''menu1'''',''''A'''',true) 将会产生一个像这样的选单 : A B C 这里的数据 (A,1), (B,2), (C,3). 请参考 范例 5 。

选单范例 2: 相同的数据, GetMenu(''''menu1'''',array(''''A'''',''''B''''),false) 将会产生一个 A 及 B 被选取的选单 : A B C

GetMenu2($name, [$default_str=''''''''], [$blank1stItem=true], [$multiple_select=false], [$size=0], [$moreAttr=''''''''])

近似于 GetMenu ,除了 $default_str 将会和 fields[1] 做比对也就是选项值。

选单范 3: 给予在范例 2 里的数据 , GetMenu2(''''menu1'''',array(''''1'''',''''2''''),false) 将会产生一个选单,A及B将会被选取。然而,这一次的被选取的比对基准是第二个字段,也就是存放要被返回给服务器里的值。

UserDate($str, [$fmt])

转换日期字串 $str 为另一个格式,UserDate 调用 UnixDate 来解译 $str ,而 $fmt 预设值是 Y-m-d 。

UserTimeStamp($str, [$fmt])

转换时间字串 $str 为另一个格式,时间字串格式是 Y-m-d H:i:s , 像是 "2002-02-28 23:00:12"。UserTimeStamp 调用 UnixTimeStamp 来解译 $str ,而 $fmt 预设值为 Y-m-d H:i:s 。

UnixDate($str)

将日期字串 $str 解译,并且转换成 unix mktime 格式(从 1970.01.01 00:00:00 起到现在的秒数)后传回。预设日期是以 Y-m-d H:i:s 格式来传入的。而对于 Sybase 及 Microsoft SQL Server 而言 M d Y 也是可以接受的(三个字元的月份表示法是被一个全域阵列所控制的,这个部份可能需要在地化 )。

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

UnixTimeStamp($str)

将时间字串 $str 解译,并且转换成 unix mktime 格式(从 1970.01.01 00:00:00 起到现在的秒数)后传回。预设日期是以 Y-m-d H:i:s 格式来传入的。而对于 Sybase 及 Microsoft SQL Server 而言 M d Y 也是可以接受的(三个字元的月份表示法是被一个全域阵列所控制的,这个部份可能需要在地化 )。

自 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() 是取得

上一页  [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服务器的新思路
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台