.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)被调用。 Connect() 或 PConnect() 执行失败时。 执行 SQL 指令的函数失败时,如 Execute() 或 SelectLimin() 。 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服务器的新思路
|