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

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:7530 更新时间:2009/4/23 10:41:03
以下为为已定义的常数:

define(''''ADODB_FETCH_DEFAULT'''',0);
define(''''ADODB_FETCH_NUM'''',1);
define(''''ADODB_FETCH_ASSOC'''',2);
define(''''ADODB_FETCH_BOTH'''',3);

以下为一个使用的例子:

       $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); # 显示 array([0]=>''''v0'''',[1] =>''''v1'''')
        print_r($rs2->fields); # 显示 array([''''col1'''']=>''''v0'''',[''''col2''''] =>''''v1'''')

在本范例中,如你所见两个数据集在被Execute()建立时,会依据 $ADODB_FERCH_MODE 的值来决定保存及使用的存取模式。

如果没有任何的模式被设定,预设值则是 ADODB_FETCH_DEFAULT。呈现的模式则依据数据库驱动程序而有所不同。为了可携性,我们建议你固定为 ADODB_FETCH_NUM 及 ADODB_FETCH_ASSOC,因为有许多驱动程序并不支持 ADODB_FETCH_BOTH 。


ADOConnection

提供连接数据库,执行SQL指令以及一组准格式化的SQL相关函数等功能的物件。

ADOConnection 属性

databaseType: 要连接的数据库系统名称,如 odbc,mssql,mysql┅等。详细内容请参考上表。

dataProvider: 下层的数据库结结机制,除了使用 odbcado 外,一般正常会设为  native

host: 数据库主机名称,可用IP或来源名称(DSN)进行连接。如203.74.225.22 , dbs1.nukepro.com , "localhost" , "odbc_dsn1"

database: 数据库或连接名称,如果使用了 ado,则会控制 ado 数据提供驱动程序(ado data provider)。

user: 登入时的 ID,密码则基于安全考量没有保留。

raiseErrorFn: 允许你定义一个错误处理函数,请参考 ADOdb-errorhandler.inc.php 的范例.

debug: 被设定为 true 时,会显示除错信息。

concat_operator: 连接运算元,一般会设为 ''''+'''' 或 ''''||''''。这个运算元是为了在 SQL 里连接字串的。会在 Concat 函数中被用到。

fmtDate: 日期格式,在DBDate函数中会使用到,做为送日期数据到数据库的依据。在Access格式为''''#Y-m-d#'''',在MySQL格式为"\Y-m-d\"。

fmtTimeStamp: 时间格式,在 DBTimeStamp 函数中要送时间数据到数据库时会使用到。

true: 数据中真值的表现方式,如在Foxpro用''''T'''',MS SQL用''''1''''。

false: 数据中假值的表现方式,如在Foxpro用''''F'''',MS SQL用''''0''''。

replaceQuote: 这个字串用来处理逸出符号。例如在 Microsoft SQL 里的双引号,MySQL里的反斜线符号。主要使用于 qstr 。

autoCommit: 设定是否启动自动交易模式,预设值为 true。

charSet: 设定使用的字元集,目前只有 interbase 支持。

metaTablesSQL: 使用SQL指令,以返回一份可用的数据表清单。例如在 MySQL 里的 SHOW TABLES。

genID: 如果数据库有支持的话,这里会存放由GetID()所取得的最后值。

cacheSecs: 快取数据集的秒数。用于当使用者利用 CacheExecute() 或 CacheSeletLimit() 函数,又没有设定 $secs2cache 参数时的预设值。

sysDate: 利用数据库函数去取得目前的日期和时间。会使用到原生的日期时间标记格式。


ADOConnection 主要函数

ADOConnection( )

建构函数,请不要直接调用,使用 ADONewConnection() 来代替。

Connect($host,[$user],[$password],[$database])

对服务器或数据来源 $host 非持续性连接,使用者认证代码为 $user ,密码为 $password ,如果服务器支持多数据库,则指定连接到数据库$database

连接成功返回 true , 失败则返回 false 。

注意:如果你使用的是 Microsoft ADO,而非 OLEDB,你可以设定 $database 参数为你正在使用的 OLEDB 数据供应器。

PostgreSQL:另一种选择性的连接方法是将标准的PostgreSQL连接字串放在 $host 参数里,那么其它的参数都会被呼略。

对于 Oracle 及 Oci8,有两个方法可以连接。第一,使用你定义的区域 tnsnames.ora 里的 TNS 名称,将这个名称放在 $database 参数里,然后将 $host 设为 false。另一种方法,设定 $host 为服务器,而 $database 则设成数据库SID ,这将会不透过 tnsnames.ora 连接。

范例:

 $conn->Connect(false, ''''scott'''', ''''tiger'''', ''''name_in_tnsnames''''); # 使用 tnsnames.ora
 $conn->Connect(''''server:1521'''', ''''scott'''', ''''tiger'''', ''''OracleSID''''); # 不使用 tnsnames.ora

还有许多的数据库连接范例在网站 php.weblogs.com/ADOdb 以及在本版所附的 testdatabase.inc.php 文件里。

PConnect($host,[$user],[$password],[$database])

对服务器或数据来源 $host 持续性连接,使用者认证代码为 $user ,密码为 $password ,如果服务器支持多数据库,则指定连接到数据库$database

连接成功返回 true , 失败则返回 false 。其它数据请参考 Connect()。

Execute($sql,$inputarr=false)

执行 SQL 指令 $sql ,如果成功,就返回一个对应的 ADORecordSet 物件。要注意的是这个指令如果执行成功时,一定会返回一个数据集,即使是执行 insert 或 update 指令也一样。

返回对应的 ADORecordSet 物件。例如,如果连接的是 mysql ,那么 ADORecordSet_mysql 将会被返回。当SQL指令执行失败时会返回 false 值。

$inputarr 参数则用来做为传入的结合变量。以下是 Oracle 的范例:

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

另一个例子,使用 ODBC ,以 ''''?'''' 符号做为协定。

  $conn->Execute("SELECT * FROM TABLE WHERE COND=?", array($val));

结合变量(Binding variables)
变量的结合可以加速SQL指令编译及快取的速度,产生较佳的效能。目前只有 Oracle 及 ODBC 支持变量结合。 ODBC 类的 ? 结合在不支持的数据库里,是以模拟的方式来做到的。

变量结合在 odbc 及 oci8po 驱动程序里的用法。

$rs = $db->Execute(''''select * from table where val=?'''', array(''''10''''));

变量结合在 oci8 驱动程序里的用法。

$rs = $db->Execute(''''select name from table where val=:key'''',array(''''key'''' => 10));

CacheExecute($secs2cache,$sql,$inputarr=false)

类似于 Execute 函数,除了将数据集暂存在 $ADODB_CACHE_DIR 指定的目录里 $secs2cache 秒外。如果 CacheExecute() 被相同的参数、数据库、使用者ID及密码,而且快取也没有过期,那么快取中的数据集将会被传回。

  include(''''ADOdb.inc.php''''); 
  include(''''tohtml.inc.php'''');
  $ADODB_CACHE_DIR = ''''/usr/local/ADOdbcache'''';
  $conn = &ADONewConnection(''''mysql''''); 
  $conn->PConnect(''''localhost'''',''''userid'''',''''password'''',''''database'''');
  $rs = $conn->CacheExecute(15, ''''select * from table''''); # 快取15秒
  rs2html($rs); /* recordset to html table */  

另外,从ADODB 1.80 版起,$secs2cache 参数成为选择性(也就是可以不加)

       $conn->Connect(...);
        $conn->cacheSecs = 3600*24; // cache 24 hours
        $rs = $conn->CacheExecute(''''select * from table'''');

如果 CacheExecute() 被多次调用,而且数据集也持续在快取中,$secs2cache 参数不会延长被快取的数据集保留时间(因为会被呼略掉),CacheExecute()只能使用在 SELECT 指令上。

效能备注:曾经作了一些效能测试,并且发现这些快取的效益极为显着。尤其是在数据库服务器运作效率慢于WEB服务器或数据库的负荷非常重的时候。ADODB的快取好在它减少了数据库服务器的负荷。当然,如果你的数据库服务器负荷不大,而且运作速度也比WEB服务器快,那快取反而会降低效能。

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

执行成功会返回一个数据集。完成一个SELECT指令,类似于 PostgreSQL中 SELECT 指令里的LIMIT $numrows OFFSET $offset 宣告。

在 PostgreSQL,SELECT * FROM TABLE LIMIT 3 将会只传回从头开始的三笔记录。相同的,$connection->SelectLimit(''''SELECT * FROM TABLE'''',3)也有同样的意思。

而 SELECT * FROM TABLE LIMIT 3 OFFSET 2 将会返回记录 3,4及5三笔(也就是在记录2之后,返回三笔记录)。相同的,在ADODB里是以 $connection->SelectLimit(''''SELECT * FROM TABLE'''',3,2) 来做的。

要注意,LIMIT宣告,在MySQL里是相反位置的。你可以设定 $connection->SelectLimit(''''select * from table'''',-1,10) 去取得从第11笔起到最后一笔的记录。

最后一个参数 $inputarr 是针对支持变量

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