ADODB

1.31版起,新增了两个资料集函数:GetUpdateSQL()及GetInsertSQL()。这允许你在执行了像"SELECT

* FROM table query WHERE..."这样的查询函数後,建立一个

$rs->fields复本,改变这些栏位,然後自动产生出更新或是新增的SQL指令。

以下我们展示如何运用这些函数,我们将存取一个资料表,带有下列栏位:(ID,FirstName,LastName,Created)。在这些函数被执行前,你需要藉由一个对资料表的查询指令(select)来初始化一个资料集。

#==============================================

# GetUpdateSQL() 及 GetInsertSQL() 范例码

#==============================================

include('ADOdb.inc.php');

include('tohtml.inc.php');

#==========================

# 以下的程式码测试新增状态

$sql = "SELECT * FROM ADOXYZ WHERE id =

-1";

# 从资料库中查询出一个空的资料集

$conn =

&ADONewConnection("mysql");

# 建立一个连结

$conn->debug=1;

$conn->PConnect("localhost",

"admin",

"",

"test"); # 连结到 MySQL, 资料库名称为

test

$rs = $conn->Execute($sql); #

执行查询,并取得一个空的资料集

$record = array(); # 初始化一个阵列,以便存放记录资料供新增用

# 设定记录中的栏位值

$record["firstname"] =

"Bob";

$record["lastname"] =

"Smith";

$record["created"] =

time();

# 传入空的资料集及栏位资料阵列到GetInsertSQL函数中,以执行功能

# 这个函数将会依传入的资料,回传一个全格式的 INSERT SQL指令

$insertSQL = $conn->GetInsertSQL($rs,

$record);

$conn->Execute($insertSQL); # 将记录挿入资料库中

#==========================

# 以下的程式码测试更新状态

$sql = "SELECT * FROM ADOXYZ WHERE id =

1";

# 选择一笔记录以便更新

$rs = $conn->Execute($sql); #

执行这个查询,并取得一个存在的记录来更新

$record = array(); # 初始化一个阵列,以存放要更新的资料

# 设定栏位里的值

$record["firstname"] =

"Caroline";

$record["lastname"] =

"Smith"; # 更新 Caroline的姓由 Miranda

变成 Smith

# 传入这个只有单一记录的资料集以及含有资料的阵列到 GetUpdateSQL函数里

# 函数将会回传一个具有正确 WHERE 条件的 UPDATE(更新) SQL 指令

$updateSQL = $conn->GetUpdateSQL($rs,

$record);

$conn->Execute($updateSQL); # 更新资料库中的记录

$conn->Close();

?>

范例 8: 使用上一笔及下一笔实作卷动我们使用HTTP取得 $next_page 变数,以追踪要跳去那一页并且储存目前页码在

session 变数 $curr_page 里。

我们呼叫连结物件的 PageExecute()函收去取得我们要的资料集,然後我们使用资料集的 AtFirstPage() 及

AtLastPage() 函数去决定是否显示下一页和上一页按钮。

include_once('ADOdb.inc.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()) {

?>

href="<?php echo

$PHPSELF,'?next_page=',$rs->AbsolutePage()

- 1 ?>">Previous

page

<?php } if

(!$rs->AtLastPage()) {

?>

href="<?php echo

$PHPSELF,'?next_page=',$rs->AbsolutePage()

+ 1 ?>">Next

page

<?php }

rs2html($rs); } ?>

以上的程式码可以在 testpaging.php 范例里找到www.cn403.com。零食团购网

使用自定错误处理及 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),那将会显示所有的错误讯息。

以下是一个简单的范例:

显示所有的错误讯息

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

所设定的档案中。

不显示任何的错误讯息

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() 函数取回。

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

'

',$e->message(),'

';

} ?>

在引入 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 这个技巧。

php中adodb中文手册,[转载]ADODB中文手册(4)相关推荐

  1. 转:从ubuntu中文论坛转载的一片超好的文章,慢慢学习中(转)

    从ubuntu中文论坛转载的一片超好的文章,慢慢学习中(转) Posted on 2011-01-07 02:05 leekiang 阅读(866) 评论(0) 编辑 收藏 所属分类: LINUX,U ...

  2. 史上最详细全中文 Cisco 3560交换机使用手册

    史上最详细全中文 Cisco 3560交换机使用手册 (末尾送交换机安全技术) 目 录 CISCO Catalyst 3560-E系列交换机的功能应用及安全解决方案 3 一.Cisco? Cataly ...

  3. 【转】SQL函数:字符串中提取数字,英文,中文,过滤重复字符

    SQL函数:字符串中提取数字,英文,中文,过滤重复字符 --提取数字 IF OBJECT_ID('DBO.GET_NUMBER') IS NOT NULL DROP FUNCTION DBO.GET_ ...

  4. python汉字排序_【IT专家】Python中文排序(转载)

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 Python 中文排序(转载) 2012/02/02 3793 Python 比较字符串大小时,根据的是 ord 函数得到的编码 值.基于它的排序 ...

  5. 如何将vs2015中的英文注释改为中文

    如何将vs2015中的英文注释改为中文 找一个中文版的vs 将 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NET ...

  6. oracle中注释都是问号?中文显示不出来问题

    转载:oracle中注释都是问号?中文显示不出来问题 - 洣水码农 - 博客园 oracle中注释都是问号?中文显示不出来问题 本人在工作中需要把开发上的库恢复到自己的虚拟机里面,然而捣鼓了许久建立好 ...

  7. Linux管理传世经典:Linux 系统管理技术手册(第二版) 中文高清版下载

    Linux管理传世经典:Linux 系统管理技术手册(第二版) 中文高清版下载 转载于:https://www.cnblogs.com/gavinhughhu/archive/2010/07/05/1 ...

  8. man手册,安装中文手册

    一.man手册. 1.什么是man手册? man手册就是linux提供给用户查看linux语法的一本书,当用户遇到一些不懂的命令/函数时,不用刻意去记住命令/函数的用法,只需要记住怎么在man手册去查 ...

  9. oracle 12c手册chm,oracle11g中文手册chm

    文档-oracle11g-物理DG日常巡检手册_计算机软件及应用_IT/计算机_专业资料.文件编号: ORACLE11g Dataguard 物理 Standby 日常巡检操作手册编写:___ 校对: ...

  10. Word中如何将英文翻译成中文?简单的方法介绍

    怎样将英文翻译成中文?通常我们在进行文档阅读的时候往往会遇到不熟悉的单词或者是句子,如果这个时候我们一个一个的将单词复制进浏览器中进行查找将会很浪费时间,并且比较麻烦,这时,我们可以借助工具就可以实现 ...

最新文章

  1. DL之GANDCGNNcGAN:GANDCGNNcGAN算法思路、关键步骤的相关配图和论文集合
  2. C语言面向对象编程(五):单链表实现
  3. cuDNN error: CUDNN_STATUS_EXECUTION_FAILED
  4. 10款中小企业必备的开源免费安全工具
  5. android 动态获取全县_省市县 ------ 三级滚动(android)
  6. python比较两个数据库表_mysql如何比对两个数据库表结构的方法
  7. setTimeout还是setInterval?
  8. python窗口怎么显示,如何使用Python在没有窗口的屏幕上显示文本
  9. caj转word怎么进行转换
  10. 学海灯塔新增课程文件点赞、下载、排序功能
  11. 从0开始的技术美术之路(美术篇)(一)美术理论基础
  12. python中time库的时间单位是秒
  13. 河南IT人物之 李少杰
  14. 仿百度外卖、美团外卖、淘点点等左右联动ListView菜单展示
  15. OpenCV分水岭watershed的应用注意
  16. 实战天池精准医疗大赛——复赛之妊娠糖尿病与基因数据分析
  17. anaconda3安装注意事项以及pytorch环境配置
  18. 小学四年级计算机学会使用颜色,四年级信息技术《漂亮文字我来变》教案
  19. 在Deepin Linux折腾出来Fuji xerox DocuPrint M115b 打印机驱动
  20. 项目管理计划包括的13个分计划——软考高项笔记10

热门文章

  1. 各省份的车牌简称 备案地区的简称
  2. 目标跟踪经典论文阅读(1)MOSSE
  3. Linux面试题(总结最全面的面试题)
  4. matlab的simulink文件mdl和slx对比
  5. TCP-IP协议详解(2) 小喇叭开始广播 (以太网与WiFi协议)
  6. 智能识别云服务端平台之神【合合信息TextIn】
  7. 计算机监控系统sacad,一套幼儿园智能化弱电CAD设计图,可以作为投标技术文件模板...
  8. 国际科学数据服务平台 - csdb_拔剑-浆糊的传说_新浪博客
  9. python读取npy文件 mse_python读取mat或npy文件以及将mat文件保存为npy文件(或npy保存为mat)的方法...
  10. 400款营销策划PPT模板免费下载