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

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:6203 更新时间:2009/4/23 10:41:03
结合功能的数据库,像 Oracle oci8。这个大大的减少了 SQL 编译的负荷。底下是 Oracle 范例:

 $conn->SelectLimit("SELECT * FROM TABLE WHERE COND=:val", 100,-1,array(''''val''''=> $val));
 

oci8po 驱动程序(oracle portable driver)使用更为标准的变量结合:

 $conn->SelectLimit("SELECT * FROM TABLE WHERE COND=?", 100,-1,array(''''val''''=> $val));

Ron Wilson 报告说 SelectLimit 在SQL指令有含 UNION 时会无效,并且建议了针对 mssql 的对策:

> 事实上,我发现一个可以立即最佳化的建构 Select Union 方法。这适用于 MS-SQL,至于
其它数据库是否适合,就不确定了。当更新求助档时,你可以参考这个范例。注意,这个方
法不适用于 MySQL。
>
> 改变:
>  Select column1 From table1
>  Union
>  Select column2 From table2
> 
> 成为:
>  Select * From (
>   Select column1 From table1
>   Union
>   Select column2 From table2
>   )
>  As dummytable
> 
> Ron

CacheSelectLimit($secs2cache, $sql, $numrows=-1,$offset=-1,$inputarr=false)

类似于 SelectLimit,除了将数据集暂存在 $ADODB_CACHE_DIR 指定的目录里 $secs2cache 秒外。

自 1.80版起,$secs2cache成为了选择性参数:

 $conn->Connect(...);
        $conn->cacheSecs = 3600*24; // 快取24小时
        $rs = $conn->CacheSelectLimit(''''select * from table'''',10);

CacheFlush($sql)

更新(删除)以 $sql 指令存放在 $ADODB_CACHE_DIR 指定目录内的全部快取数据集。如果你企图更新所有的快取数据集,请执行如下的PHP指令码(仅针对 Unix 有效):system("rm -f find ".ADODB_CACH_DIR." -name ADODB_*.cache") ;

ErrorMsg()

返回最后状态或是错误信息。即使没有错误发生,本函数也会返回一个字串。一般情况下,你不需要调用这个函数,除非ADODB函数因为错误状态返回了false值。

注意:如果 debug 旗标被启动了,SQL 错误信息将会在Execute函数被调用时发生错误后出现。

ErrorNo()

返回最后的错误号码。注意一点,旧版本的 PHP(4.0.6以前),不支持ODBC的错误编号。一般情况下,你不需要调用这个函数,除非ADODB函数因为错误状态返回了false值。

GenID($seqName = ''''ADOdbseq'''',$startID=1)

产生一个顺序号码(在mssql是一个整数值)。对 interbase,mysql,postgresql,oci8,oci8po,ODBC核心类驱动程序(如 access,vfp,db2等等) 都支持。使用 $seqName做为顺序名。如果数据库没有值,那么GenID()将会自动为你产生一个序号(产生使用者 id 时允许如此),换句话说,你必需自行建立序号。

如果你的数据库驱动程序要模拟序号,数据表的名称就是序号名(sequence name),而这个数据表必需有一个字段"id",而其数据类型为整数,或你需要更大些的 numeric(16)。

对于没有支持序号原生功能的ODBC及数据库(如 mssql,mysql),我们对每一个序号建立一个数据表。如果序号没有被预先定义,那启如的号码值就设定成 $startID。

注意,mssql驱动程序的 GenID()会产生一个16位元的GUID。自1.90版起,我们将返回整数。

UpdateBlob($table,$column,$val,$where)

允许你以 $where 条件保存一个BLOB(存在 $val里的)值到 $table 里的 $column 字段。

例:

 

       # for oracle
        $conn->Execute(''''INSERT INTO blobtable (id, blobcol) VALUES (1, empty_blob())'''');
        $conn->UpdateBlob(''''blobtable'''',''''blobcol'''',$blobvalue,''''id=1'''');

        # non oracle databases
        $conn->Execute(''''INSERT INTO blobtable (id, blobcol) VALUES (1, null)'''');
        $conn->UpdateBlob(''''blobtable'''',''''blobcol'''',$blobvalue,''''id=1'''');

如果成功,会返回 true ,否则返回 false 值。目前有 MySQL, PostgreSQL, Oci8, Oci8po 及 Interbase 支持。其它驱动程序可能有效,仍在持续开发中。

要注意,在PHP 4.1.0 以前的版本,当 Interbase的 blob 值被 SELECT 取回值时,它仍需要被解码,请使用 $connection->DecodeBlob($blob); 以还原它的内容。

UpdateClob($table,$column,$val,$where)

允许你以 $where 条件保存一个BLOB(存在 $val里的)值到 $table 里的 $column 字段。类似于 UpdateBlog,但主要针对文字大型文件物件。

例:

 

       # for oracle
        $conn->Execute(''''INSERT INTO clobtable (id, clobcol) VALUES (1, empty_clob())'''');
        $conn->UpdateBlob(''''clobtable'''',''''clobcol'''',$clobvalue,''''id=1'''');

        # non oracle databases
        $conn->Execute(''''INSERT INTO clobtable (id, clobcol) VALUES (1, null)'''');
        $conn->UpdateBlob(''''clobtable'''',''''clobcol'''',$clobvalue,''''id=1'''');

UpdateBlobFile($table,$column,$path,$where,$blobtype=''''BLOB'''')

如同 UpdateBlob ,但我们将值改成一个文件路径,将整个文件存入。

成功返回 true 否则为 false。

GetUpdateSQL(&$rs, $arrFields, $forceUpdate=false,$magicq=false)

建立一个 SQL 以更新一个被给予的数据集 $rs ,被修改的字段存放在阵列 $arrFields中(这个阵列必需是具名阵列,字段名为索引,值为修正值),会与原来的数据集做一个比较,如果 $forceUpdate被设为 true,那么即使 $arrFields与 $rs->fields完全相同,也会产生出更新的SQL指令。数据集必需在连接状态。$magicq 被用于指出魔术引号功能是否被启动。

GetInsertSQL(&$rs, $arrFields,$magicq=false)

建立一个 SQL 以新增一笔记录到被给予的数据集 $rs。这个查询必需是在连接状态。$magicq 被用于指出魔术引号功能是否被启动。

PageExecute($sql, $nrows, $page, $inputarr=false)

使用数据集的页码功能,参数 $page 是以 1 为启使值,请参考范例 8.

CachePageExecute($secs2cache, $sql, $nrows, $page, $inputarr=false)

使用数据集的页码功能,参数 $page 是以 1 为启使值,请参考范例 8.PageExecute 的快取版。

Close( )

关闭数据库的连接。PHP4 以数据库连接结束时不需要特别去清除而享有盛名,因为其参考计数机制会自动帮我们清除掉。

BeginTrans( )

启始一笔交易。会关闭自动结案功能。执行成功会返回 true 。如果不支持交易功能,部份数据库会一直传回 false 值。Interbase,Oracle 及 MSSQL 支持交易机制。请注意,因为 PHP 4.02 版的臭虫,交易支持在微软的 ADO 上是无效的。你必需使用你关连式数据库的原生交易支持功能。当连接结束时,任何开启的交易都会被还原。

CommitTrans( )

成功的结束一次交易。如果成功,返回 true。如果数据库并不支持交易功能,那么就只会传回 true ,以表示数据总是交易成功的。

RollbackTrans( )

结束一次交易,恢复所有改变。执行成功会返回 true 。如果数据库并不支持交易功能,那么就只会传回 false ,以表示数据总是不能恢复。

GetOne($sql)

Executes the SQL and returns the first field of the first row as an array. The recordset and remaining rows are discarded for you automatically. If an error occur, false is returned.

执行SQL指令,并且以阵列的方式返回第一笔记录的第一个字段。数据集及其馀的记录将会被自动清除,如果发生错误,就返回 false 值。

译者注:这个功能在验证某笔记录在不在特别有用,可以减少系统内存及资源的用量。

GetRow($sql)

执行SQL指令,并且以阵列的方式返回第一笔记录。数据集及其馀的记录将会被自动清除,如果发生错误,就返回 false 值。

Prepare($sql )

预先编译一个SQL查询,以便于重覆执行。如果有任何语法错误,Prepare()不会显示任合错误,但允许 Execute() 去取得及显示错误。内部实作支持 interbase ,oci8 及选择性的 ODBC-based 驱动程序。其馀的都是以模拟的方式支持。在模拟的情况下,使用 Prepare() 对效能的增进没有任何效果。

返回一个包含了原始描述为第一个阵列元素的阵列,其馀的元素内容则视驱动程序而定。如果有错误或是模拟方式的 Prepare(),会返回原来的 $sql 字串。那是因为所有的错误处理都被集中到 Execute() 里去了。

范例 :

$stmt = $DB->Prepare(''''insert into table (col1,col2) values (?,?)'''');

上一页  [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……
    咸宁网络警察报警平台