ADODB入门教程基础文章 笛子入门基础教程

不得不看的基础文章。

1、简要说明
ADODB是PHP中的一个通用的数据库操作库,ADODB目前支持MySQL、PostgreSQL、Oracle、Interbase、MicrosoftSQL Server、Access、FoxPro、Sybase、ODBC及ADO,你可以从http://php.weblogs.com/adodb下载 ADODB。

2、安装
下载 tgz或 zip解压即可。

3、使用
使用前包含进 adodb.inc.php即可
include("$adodb_path/adodb.inc.php"); // includes the adodblibrary

4、函数
全局函数几乎只有一个
NewADOConnection('DataBaseType');
作用:生成一个ADOdb对象。

可以的值为: (不包括括号里的内容)
access (Microsoft Access/Jet)
ado (Generic ADO, the base for all the other ADO drivers)
ado_access (Microsoft Access/Jet using ADO)
ado_mssql (Microsoft SQL Server using ADO)
db2 (DB2)
vfp (Microsoft Visual FoxPro)
fbsql (FrontBase)
ibase (Interbase 6 or before)
firebird (Firebird)
informix72 (Informix databases before Informix 7.3)
informix (Informix)
maxsql (MySQL with transaction support)
mssql (Microsoft SQL Server 7)
mssqlpo (Portable mssql driver)
mysql (MySQL without transaction support)
mysqlt (MySQL with transaction support, identical tomaxmysql)
oci8 (Oracle 8/9)
oci805 (Oracle 8.0.5)
oci8po (Oracle 8/9 portable driver)
odbc (Generic ODBC, the base for all the other ODBC drivers)
odbc_mssql (MSSQL via ODBC)
odbc_oracle (Oracle via ODBC)
oracle (Oracle 7)
postgres (PostgreSQL)
postgres64 (PostgreSQL 6.4)
postgres7 (PostgreSQL 7, currently identical to postgres )
sqlanywhere (Sybase SQL Anywhere)
sybase (Sybase)


rs2html 把 RecordSet 对象转成html输出
要包含 include('tohtml.inc.php');

5、对象
PHP ADODB与MS ADO 对象结构相似,
主要用到两个对象 (ADOConnection 对象与 RecordSet 对象)
ADOConnection负责数据库的连接,发送 sql 命令等;RecordSet主要是得到查询出来的记录集

6、ADOConnection 对象说明
1、建立
ADODB是用 NewADOConnection() 函数来新建一个 ADODB连接对象,如:
$db = NewADOConnection('$database_type'); // A new connection
$database_type 是数据库格式,可能值看上面 第4小节。

2、连接数据库
用ADOConnection 的 Connect 方法,格式如下:
Connect("主机名","用户名","用户密码","数据库名");
返回值,连接成功返回一个 ADOConnection对象,错误返回 FALSE,可以用 ADOConnection的ErrorMsg()函数得到错误说明.
$db->Connect("$host", "$user", "$password","$database_name");

3、执行SQL指令
用Execute函数执行 SQL 命令 如:
$result = $db->Execute("SELECT * FROMemployees");
if ($result === false) die("failed");
执行成功返回一个 Recordset 对象,否则返回 FALSE

4、Affected_Rows()函数
Affected_Rows()函数返回最后一个 sql 命令所影响到的记录行数。

5、日期格式
由于 ADODB需要支持不同的数据库系统,而这些不同的数据库可能用不同的方式来表示日期/时间格式。ADODB用DBDate()函数来转换不同数据库之间的格式。

6、字符串格式
不同的数据库可以用不对的字符串表示格式,如'单括号的表示方法。例:
$ID = 3
$TheDate=mktime(0,0,0,8,31,2001)
$Note= sugar why don't we call it off
$sql = "INSERT INTO table (id, thedate,note) values ("
. $ID . ','
. $db->DBDate($TheDate) .','
. $db->qstr($Note).")";
$db->Execute($sql);

7、Select指令的Limit及Top支持
$connection->SelectLimit($sql,$nrows,$offset);
注意:第二个参数是需要返回的行数,第三个参数才是从第几行开始。
返回值:成功返回一个Recordset 对象,失败返回 FALSE; 对于分页时相当有用。

8、Cache缓存
CacheExecute 与 CacheSelectLimit 函数。
第一个参数为超时时间,秒数。
ADODB允许你在你的档案系统中暂存recordset的数据,并且在$connection->CacheExecute($secs2cache,$sql)及$connection->CacheSelectLimit($secs2cache,$sql,$nrows,$offset)等设定的时间间隔到达之后,才真正去做数据库的查询以节省时间。
可以用 $ADODB_CACHE_DIR 来指定 Cache目录,好象要用绝对路径。但超时过后,PHP不能自动删除cache,要人工手动删除。

9、事务
StartTrans() 开始事务
CompleteTrans() 结束事务 ADODB 自动处理事务的提交与回滚
HasFailedTrans() 事务是否成功 TRUE 成功,FALSE为失败
大多数数据库直持事务,但MySQL InnoDB表支持事务,而MyISAM表不支持。

10、SetFetchMode
设置 Recordset 对象的记录集索引方式。如:
$db->SetFetchMode(ADODB_FETCH_ASSOC); // Returnassociative array
ADODB_FETCH_NUM; 以数字方式索引

12、GetInsertSQL , GetUpdateSQL
生成一个 Insert SQL , 有两个参数,第一个是一个 RecordSet 第二个是一个数组。 例如:

$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();

13、PageExecute 分页查询
如:PageExecute($sql, $num_of_rows_per_page, $curr_page);
可能用到的属性 AtFirstPage() , AtLastPage(),AbsolutePage()



7、Recordset 对象
1、Move($Pos)
卷动目前的数据列,ADODB支持整个数据库往前卷动,有一些数据库并不支持往后的卷动,这倒不会是个问题,因为你能够用暂存纪录到快取来仿真往后卷动。

2、RecordCount() 或 RowCount()
传回SQL指令存取到的纪录笔数,有些数据库会因为不支持而传回-1

3、EOF
是否为记录尾

4、fields
用以获取记录集的值,用法,$rs->fields[编号或字段名],如果$db->SetFetchMode(ADODB_FETCH_ASSOC);则可以用字段名直接访问。

5、MoveNext()
记录指针下移一个。

6、MoveFirst
记录指针移动在开头。

7、FetchNextObject()
得到一个行对象,且指针自动下移。如:
$row = $rs->FetchNextObject();
echo($row->UserName . $row->Age);

8、Insert_ID
得到记录集最后一次插入的值。

9、MetaTypes
得到字段的类型。如:
$fld = $recordSet->FetchField(1);
ADODB入门教程(基础文章) 笛子入门基础教程
$type =$recordSet->MetaType($fld->type);
if ( $type == 'D' || $type == 'T') {.....};
可能的值与意义:
C: character 栏位,应该使用 <inputtype="text"> 标记来取值。
X: 文字栏位(Text) , 长文字栏位,使用 <textarea>标记来显示资料。
B: Blob 栏位或者大型的二位元物件(像程式,图档等)。
D: 日期栏位
T: 时间栏位
L: 逻辑栏位(真假值)或位元栏位
N: 数字栏位,包含自动进位、编号、整数、浮点数、实数等。
R: 序列栏位,包含了序列、自动增进整数,只对被选择的资料库作用。

10、FetchField
得到一个字段对象 如:
$field = $rs->FetchField();
field对象有三个属性 name 、type 、length 分别的意义为(名称、类型、长度,长度可能传回-1)
而 type 可以通过 MetaTypes 转换成字符格式,如:
$fld = $recordSet->FetchField(1);
$type =$recordSet->MetaType($fld->type);
if ( $type == 'D' || $type == 'T') {.....};

  

爱华网本文地址 » http://www.413yy.cn/a/25101015/250263.html

更多阅读

LoadRunner基础入门教程 精 简谱入门基础教程

LoadRunner基础入门教程 精——简介从LoadRunner英语字面上进行理解就是负载跑步者,为什么这么说呢?对于从事IT软件行业的工作者如开发人员和测试人员来说一定不会感到陌生就是在承受负载的条件下运行软件或者网页的业务。从另一个比

Adobe Premiere Pro CC基础入门经验教程 adobepremiereprocs6

Adobe Premiere Pro CC基础入门经验教程——简介Adobe Premiere Pro CC最新基础入门教程,内容包括Premiere里如何建立项目,如何新建序列,如何使用Audition降噪,如何导出视频文件。详见视频!很抱歉,视频数据暂时无法显示Adobe Premiere Pr

五线谱入门基础教程 五线谱快速记忆法

五线谱入门基础教程——简介五线谱是记录音乐的一种语言,是一种记谱方法。五线谱,顾名思义是由五条平行线组成的,当然还包括每相邻两条平行线之间的“间”。五条线的顺序是由下往上数的。最下面第一条线叫做“第一线”,往上数第二条线

初学会计零基础入门教程 会计网上免费学习

初学会计零基础入门教程——简介 当你没有一定基础去学会计的时候,会计对于自己来说,就好比是一个空的杯子。慢慢地这个杯子就会被注入东西。下面就谈谈如何快速入门会计学,特别是对于一个没有任何基础的人来说。初学会计零基础入门教

声明:《ADODB入门教程基础文章 笛子入门基础教程》为网友一切皆有可能分享!如侵犯到您的合法权益请联系我们删除