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

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:6206 更新时间:2009/4/23 10:41:03
ose(); # optional $conn->Close(); # optional ?>

在这个例子中,我们使用 FetchField() 函数来检查第二个字段的数据类型。这将会返回一个至少有三个字段的物件,字段说明如下:

  • name: 字段名

  • type: 字段的数据原生类型native field type of column

  • max_length: 字段的最大长度,部份数据库像MySQL,并不返回字段的正确值,以这个例子而言,就会返回 -1 。

然后我们使用 MetaType() 去转换原生类型成通用类型,目前通用类型定义如下:

  • C:  character 字段,应该使用 <input type="text"> 标记来取值。

  • X: 文字字段(Text) , 长文字字段,使用 <textarea> 标记来显示数据。

  • B: Blob 字段或者大型的二位元物件(像程序,图档等)。

  • D: 日期字段

  • T: 时间字段

  • L: 逻辑字段(真假值)或位元字段

  • N: 数字字段,包含自动进位、编号、整数、浮点数、实数等。

  • R: 序列字段,包含了序列、自动增进整数,只对被选择的数据库作用。

如果对应类型是日期或时间,那你可以使用 UserDate() 函数来设定输出的日期格式。这个函数会转换 PHP SQL 日期字串格式为使用者定义的格式。 另一个使用MetaType()的时机是在进行SQL新增或更新指令时,数据格式验证用。

范例 3: 新增

新增一笔记录到订单数据表,里面包含了日期和字串,为了能被数据库正常存取,字串必需校正,以避免部份标记字元。例如:有单引号的字串,John''''s。

<?
include(''''ADOdb.inc.php'''');       # load code common to ADOdb
$conn = &ADONewConnection(''''access'''');    # create a connection

$conn->PConnect(''''northwind'''');   # connect to MS-Access, northwind dsn
$shipto = $conn->qstr("John''''s Old Shoppe");

$sql = "insert into orders (customerID,EmployeeID,OrderDate,ShipName) ";
$sql .= "values (''''ANATR'''',2,".$conn->DBDate(time()).",$shipto)";

if ($conn->Execute($sql) === false) {
        print ''''error inserting: ''''.$conn->ErrorMsg().''''<BR>'''';
}
?>

在这个范例中,我们看见了ADODB更进一步的日期及标点符号的处理方式。Unix 日期时间标示(长整数)被DBDate()格式化成Access可以接受的格式,而带了缩写符号的 John''''s Old Shoppe 则被 qstr() 函数处理成 John''''''''s Old Shoppe 字串,以被数据库合法存取。

观察 Execute 指令的错误处理。如果 Execute() 执行有错误发生时,会传回 False 值。而最后的错误信息可以由  ErrorMsg() 来显示。

附记:php_track_errors旗标可以被启动,以便将错误信息保存起来。

范例 4: 除错

<?
include(''''ADOdb.inc.php'''');       # load code common to ADOdb
$conn = &ADONewConnection(''''access'''');    # create a connection
$conn->PConnect(''''northwind'''');   # connect to MS-Access, northwind dsn
$shipto = $conn->qstr("John''''s Old Shoppe");
$sql = "insert into orders (customerID,EmployeeID,OrderDate,ShipName) ";
$sql .= "values (''''ANATR'''',2,".$conn->FormatDate(time()).",$shipto)";
$conn->debug = true;
if ($conn->Execute($sql) === false) print ''''error inserting'''';
?>

在上面的例子中,我们藉由设定 debug=true 来启动除错模式。这将会在执行指令时会先将SQL指令显示,并且会显示所有的错误信息,而不需要去调用 ErrorMsg() 。显示数据集的部份,可以参考 rs2html() 范例。

其它的请参考自定错误处理的说明。

范例 5: MySQL及选单

连接到MySQL数据库agora ,并且从SQL命令中建立一个 <select> 选单,<option>的标题是第一个字段,返回值是第二个字段。

<?
include(''''ADOdb.inc.php''''); # load code common to ADOdb
$conn = &ADONewConnection(''''mysql'''');  # create a connection
$conn->PConnect(''''localhost'''',''''userid'''','''''''',''''agora'''');# connect to MySQL, agora db
$sql = ''''select CustomerName, CustomerID from customers'''';
$rs = $conn->Execute($sql);
print $rs->GetMenu(''''GetCust'''',''''Mary Rosli'''');
?>

Here we define a menu named GetCust, with the menu option ''''Mary Rosli'''' selected. See GetMenu(). We also have functions that return the recordset as an array: GetArray(), and as an associative array with the key being the first column: GetAssoc().

这里,我们定义了一个名为GetCust的选单,预设值是''''Mary Rosli''''。相关说明请参考 GetMenu() 。我们也将数据集以阵列返回的方式写在 GetArray()方法里。而另外返回关联式阵列的方法则使用 GetAssoc() ,其中第一个字段是这个字段的键值。

在 1.50 版以后的 ADODB 里,是使用公共变量 $ADODB_FETCH_MODE 来设定返回的阵列是以编号或是关连式字串做索引。

范例 6: 一次连接两个数据库

<?
include(''''ADOdb.inc.php'''');     # 载入 ADOdb
$conn1 = &ADONewConnection(''''mysql'''');  # 建立一个 mysql 连接
$conn2 = &ADONewConnection(''''oracle'''');  # 建立一个 oracle 连接

$conn1->PConnect($server, $userid, $password, $database);
$conn2->PConnect(false, $ora_userid, $ora_pwd, $tnsname);

$conn1->Execute(''''insert ...'''');
$conn2->Execute(''''update ...'''');
?>

范例 7: 产生 Update 及 Insert 的SQL指令

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() 函数去决定是否显示下一页和上一页按钮。

<?php
include_once(''''ADOdb.inc

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