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

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:6204 更新时间:2009/4/23 10:41:03
.php''''); include_once(''''tohtml.inc.php''''); session_register(''''curr_page''''); $db = NewADOConnection(''''mysql''''); $db->Connect(''''localhost'''',''''root'''','''''''',''''xphplens''''); $num_of_rows_per_page = 10; $sql = ''''select * from products''''; if (isset($HTTP_GET_VARS[''''next_page''''])) $curr_page = $HTTP_GET_VARS[''''next_page'''']; if (empty($curr_page)) $curr_page = 1; ## at first page $rs = $db->PageExecute($sql, $num_of_rows_per_page, $curr_page); if (!$rs) die(''''Query Failed''''); if (!$rs->EOF && (!$rs->AtFirstPage() || !$rs->AtLastPage())) { if (!$rs->AtFirstPage()) { ?> <a href="<?php echo $PHPSELF,''''?next_page='''',$rs->AbsolutePage() - 1 ?>">Previous page</a> <?php } if (!$rs->AtLastPage()) { ?> <a href="<?php echo $PHPSELF,''''?next_page='''',$rs->AbsolutePage() + 1 ?>">Next page</a> <?php } rs2html($rs); } ?>

以上的程序码可以在 testpaging.php 范例里找到。

使用自定错误处理及 PEAR_Error

在之前的版本,你可以使用像 $con->debug=true ; 这样的设定来进行除错。但在 1.50 版后,我们提供了另一种方法来处理错误状态。我们让工程师可以使用 ADODB 的自订错误处理程序功能。

ADODB 提供了两种自订处理方式,你可以配合你的的需要而修订。第一个方法放在 ADOdb-errorhandler.inc.php 文件里。这让你可以使用标准的 PHP 函数 err_reporting 去控制要显示怎样的错误信息及 trigger_error 去调用 PHP 预设的错误处理程序。

引入了上述文件后(ADOdb-errorhandler.inc.php),当发生了下列的错误后,将会使得 trigger_error($errorstring,E_USER_ERROR)被调用。

  1. Connect() 或 PConnect() 执行失败时。

  2. 执行 SQL 指令的函数失败时,如 Execute() 或 SelectLimin() 。

  3. GenID() 进入了无限回圈时。

这里的 $errorstring 变量是由 ADODB 所产生的。而且会包含了有用的除错信息,类似于随后会建立的 error.log 数据。所以,为了要能正确提供除错信息,你要在建立 ADOConnection 物件前,就把 ADOdb-errorhandler.inc.php 引入到程序码中。

If you define error_reporting(0), no errors will be shown. If you set error_reporting(E_ALL), all errors will be displayed on the screen.

如果你设定了 error_reporting(0) 的话,将不会有任何错误被显示。如果你设定了 error_reporting(E_ALL),那将会显示所有的错误信息。

以下是一个简单的范例:

<?php
error_reporting(E_ALL); # 显示所有的错误信息
include(''''ADOdb-errorhandler.inc.php'''');
include(''''ADOdb.inc.php'''');
include(''''tohtml.inc.php'''');
$c = NewADOConnection(''''mysql'''');
$c->PConnect(''''localhost'''',''''root'''','''''''',''''northwind'''');
$rs=$c->Execute(''''select * from productsz''''); #不正确的数据表 productsz'''');
if ($rs) $rs2html($rs);
?>

如果你要把错误信息记录下来,你可以定义两个选择性常数 ADODB_ERROR_LOG_TYPE, ADODB_ERROR_LOG_DEST。有关于 ADODB_ERROR_LOG_TYPE 的值,你可以去参考 PHP 使用手册中有关于 error_log 的说明。在以下的范例中,我使将它设为 3,意思是指将信息记录到常数 ADODB_ERROR_LOG_DEST 所设定的文件中。

<?php
error_reporting(0); # 不显示任何的错误信息
define(''''ADODB_ERROR_LOG_TYPE'''',3);
define(''''ADODB_ERROR_LOG_DEST'''',''''C:/errors.log'''');
include(''''ADOdb-errorhandler.inc.php'''');
include(''''ADOdb.inc.php'''');
include(''''tohtml.inc.php'''');

$c = NewADOConnection(''''mysql'''');
$c->PConnect(''''localhost'''',''''root'''','''''''',''''northwind'''');
$rs=$c->Execute(''''select * from productsz''''); ## 不正确的数据表 productsz
if ($rs) $rs2html($rs);
?>

以下则是写在 error.log 档的错误信息:

(2001-10-28 14:20:38) mysql error: [1146: Table ''''northwind.productsz'''' doesn''''t exist] in
 EXECUTE("select * from productsz")

第二种错误处理方法是 ADOdb-errorpear.inc.php 。使用这种方式,在错误发生时会产生 PEAR_Error 衍生物件,而最后产生的 PEAR_Error 物件可以被 ADODB_Pear_Errir() 函数取回。

<?php
include(''''ADOdb-errorpear.inc.php'''');
include(''''ADOdb.inc.php'''');
include(''''tohtml.inc.php'''');
$c = NewADOConnection(''''mysql'''');
$c->PConnect(''''localhost'''',''''root'''','''''''',''''northwind'''');
$rs=$c->Execute(''''select * from productsz''''); #不正确的数据表 productsz'''');
if ($rs) $rs2html($rs);
else {
        $e = ADODB_Pear_Error();
        echo ''''<p>'''',$e->message(),''''</p>'''';
}
?>

在引入 ADOdb-errorpear.inc.php 档之前,藉由定义 ADODB_PEAR_ERROR_CLASS 常数,你可以使用一个 PEAR_Error 衍生类别。为了方便除错,你可以在 PHP 程序码的最前面定义预设的错误理方式为 PEAR_ERROR_DIE,这将会使得程序一出错,马上就输出错误信息,并且停止执行。

include(''''PEAR.php'''');
PEAR::setErrorHandling(''''PEAR_ERROR_DIE'''');

注意,当错误产生时,ADODB并没有明确的返回一个 PEAR_Error 物件给你。你必需要去调用 ADODB_Pear_Error() 函数去取回最后的错误内容。或者,你可以使用 PEAR_ERROR_DIE 这个技巧。

数据集快取

现在,ADODB使用 CacheExecute(),CachePageExecute()及CacheSelectLimit()函数来支持数据集快取。用法类似于没有快取的函数,除了要加上一个新的参数 $secs2cache。

以下是一个范例 :

include(''''ADOdb.inc.php''''); # 载入ADODB
$ADODB_CACHE_DIR = ''''/usr/ADODB_cache'''';
$conn = &ADONewConnection(''''mysql'''');  # 建立一个连接
$conn->PConnect(''''localhost'''',''''userid'''','''''''',''''agora'''');# 连接到 MySQL, agora 数据库
$sql = ''''select CustomerName, CustomerID from customers'''';
$rs = $conn->CacheExecute(15,$sql);

第一个参数是设定查询的快取秒数。随后调用的查询将会使用存放在由  $ADODB_CACHE_DIR 变量指定的快取数据。要强迫查讯执行,并且更新快取记录,使用 CacheExecute() 函数,并且将第一个参数设为 0 。或者,使用 CacheFlush($sql) 也行。

基于安全的考量,如果你要使用 $ADODB_CACHE_DIR,我们建议你将在 php.ini 里的 register_globals 设成 off。 

在 ADODB 1.80版以后,在 CacheSelectLimit() 及 CacheExecute() 中,参数 secs2cache 是选择性的。如果你不填上去,系统将会使用 $connection->cacheSecs 属性的值,它的预设值是 60 分钟。

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

参考手册

以[]包起来的参数为选用参数,可有可无。

共用变量

$ADODB_COUNTRECS

当本变量($ADODB_COUNTRECS)被设为 true 时,如果数据库驱动程序介面(API)不支持返回被 SELECT 指令所选取的数据笔数,那么 RecordCount() 函数将会自动模拟,并返回正确的数据笔数,预设值即为 true。模拟方式是建立一个内存暂存区来放置这些数据,因此当取回的数据笔数很大时,会占用很大量的内存。当设定本变量值为 false 时,会有最好的效能。本变量在每次执行查讯时都会自动检查,所以你可以依实际需要在每次查询前进行设定。

$ADODB_CACHE_DIR

如果你使用了数据集快取功能,那么那些快取数据都会被置放到这个变量所指定的目录里。所以当你要使用诸如 CacheExecute() 函数前,你应该要先设定好本变量。期于安全的考量,如果你要使用 $ADODB_CACHE_DIR,我们建议你将在 php.ini 里的 register_globals 设成 off。 

$ADODB_FETCH_MODE

这个共用变量决定了数据集以那种方式将数据传给阵列。数据集在被建立时(如 Execute()或SelectLimit())会把本变量($ADODB_FETCH_MODE)的值保存下来,而随后本变量($ADODB_FETCH_MODE)的任何改变都不会影响到现存的数据集,只有在以后数据集被建立起来时才会改变。

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