Bookmark and Share

Lee's 程序人生

HTML CSS Javascript XML AJAX ATLAS C# C++ 数据结构 软件工程 设计模式 asp.net Java 数字图象处理 Sql 数据库
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

常用的ADODB使用方法

Posted on 2008-06-17 16:47  analyzer  阅读(1605)  评论(0编辑  收藏  举报
  1<?php    
  2/*   
  3常用的ADODB使用方法   
  4作者:飞豹游侠 整理:淡水河边   
  5*/   
  6//定义数据库变量    
  7$DB_TYPE     = "mysql";    
  8$DB_HOST     = "localhost";    
  9$DB_USER     = "root";    
 10$DB_PASS     = "";    
 11$DB_DATABASE = "ai-part";    
 12require_once("../adodb/adodb.inc.php");    
 13$db = NewADOConnection("$DB_TYPE");//建立数据库对象    
 14$db->debug = true;//数据库的DEBUG测试,默认值是false    
 15$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;//返回的记录集形式,关联形式    
 16/***   
 17返回的记录集形式   
 18define('ADODB_FETCH_DEFAULT',0);   
 19define('ADODB_FETCH_NUM',1);   
 20define('ADODB_FETCH_ASSOC',2);   
 21define('ADODB_FETCH_BOTH',3);    
 22以上常量,在adodb.inc.php里定义了,也就是可用"$ADODB_FETCH_MODE=2"方式   
 23ADODB_FETCH_NUM   返回的记录集中的索引,是数字形式,即数据库字段的排序顺序值   
 24ADODB_FETCH_ASSOC 返回的记录集中的索引,是原数据库字段名   
 25ADODB_FETCH_BOTH 和 ADODB_FETCH_DEFAULT 是同时返回以上两种。某些数据库不支持   
 26An example:    
 27    $ADODB_FETCH_MODE = ADODB_FETCH_NUM;    
 28    $rs1 = $db->Execute('select * from table');    
 29    $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;    
 30    $rs2 = $db->Execute('select * from table');    
 31    print_r($rs1->fields); # 返回的数组是: array([0]=>'v0',[1] =>'v1')    
 32    print_r($rs2->fields); # 返回的数组是: array(['col1']=>'v0',['col2'] =>'v1')    
 33***/   
 34   
 35//连接数据库,方法有Connect,PConnect,NConnect,一般使用Connect    
 36if (!@$db->Connect("$DB_HOST", "$DB_USER", "$DB_PASS", "$DB_DATABASE")) {    
 37    exit('<a href="/">服务器忙,请稍候再访问</a>');    
 38}    
 39   
 40/*   
 41$db->  $rs-> 此类的使用方法   
 42Execute($sql),执行参数中的$sql语句   
 43SelectLimit($sql,$numrows=-1,$offset=-1) $numrows:取几条记录,$offset,从第几条开始取,一般是用于分页,或只取出几条记录的时候用   
 44*/   
 45//Example: 取出多个记录    
 46$sql = "Select * FROM table orDER BY id DESC";    
 47if (!$rs = $db->Execute($sql)) {//执行SQL语句,并把结果返回给$rs变量    
 48    echo $db->ErrorMsg();//这个是打印出错信息    
 49    $db->Close();//关闭数据库    
 50    exit();    
 51}    
 52while (!$rs->EOF) {//遍历记录集    
 53    echo $rs->fields['username'. '<br>';    
 54      //print_r($rs->fields)试试,$rs->fields['字段名'],返回的是这个字段里的值    
 55    $rs->MoveNext();//将指针指到下一条记录,否则出现死循环!    
 56}    
 57$rs->Close();//关闭以便释放内存    
 58   
 59//插入新记录    
 60$sql = "Insert table (user_type,username) VALUES (3, 'liucheng')";    
 61$db->Execute($sql);    
 62   
 63//更新记录    
 64$sql = "Update table SET user_type=3 Where id=2";    
 65$db->Execute($sql);    
 66   
 67//删除记录    
 68$sql = "Delete FROM table Where id=2";    
 69$db->Execute($sql);    
 70   
 71// 取单个记录    
 72//$db->GetRow($sql), 取第一条记录,并返回一个数组,出错返回false    
 73$sql = "Select username,password,user_type FROM table Where id=3";    
 74$data_ary = $db->GetRow($sql);    
 75if ($data_ary == false) {    
 76    echo '没有找到此记录';    
 77    exit();    
 78else {    
 79    echo $data_ary['username'. ' ' . $data_ary['password'. ' ' . $data_ary['user_type'. '<br>';    
 80}    
 81   
 82//另一种方法    
 83$sql = "Select username,password,user_type FROM table Where id=3";    
 84if (!$rs = $db->Execute($sql)) {    
 85    echo $db->ErrorMsg();    
 86    $db->Close();    
 87    exit();    
 88}    
 89if (!$result = $rs->FetchRow()) {    
 90    echo '没有找到此记录';    
 91    exit();    
 92else {    
 93    echo $result['username'. ' ' . $result['password'. ' ' . $result['user_type'. '<br>';    
 94}    
 95   
 96// 取单个字段    
 97//$db->GetOne($sql) 取出第一条记录的第一个字段的值,出错则返回false    
 98$sql = "Select COUNT(id) FROM table";    
 99$record_nums = $db->GetOne($sql);    
100echo $record_nums;    
101$sql = "Select username,password,user_type FROM table Where user_id=1";    
102$result = $db->GetOne($sql);    
103echo $result;//打印出username的值    
104/*   
105在进行添加,修改,删除记录操作时,   
106要对字符串型的字段,使用$db->qstr()对用户输入的字符进行处理,   
107对数字型字段,要进行数据判断   
108更新记录,注意:这是针对php.ini中,magic_quotes被设置为Off的情况,如果不确定,可以使用   
109$db->qstr($content,get_magic_quotes_gpc())   
110注意:content= 等号右边,没有单引号   
111*/   
112$sql = "Update table SET content=" . $db->qstr($content. " Where id=2";    
113$db->Execute($sql);    
114   
115   
116/*$db->Insert_ID(),无参数,返回刚刚插入的那条记录的ID值,仅支持部分数据库,带auto-increment功能的数据库,如PostgreSQL, MySQL 和 MS SQL    
117*/   
118//Example:    
119$sql = "Insert table (user_type,username) VALUES (3, 'liucheng')";    
120$db->Execute($sql);    
121$data_id = $db->Insert_ID();    
122echo $data_id;    
123   
124/*$db->GenID($seqName = 'adodbseq',$startID=1),产生一个ID值.$seqName:用于产生此ID的数据库表名,$startID:起始值,一般不用设置,它会把$seqName中的值自动加1.支持部分数据库,某些数据库不支持   
125  
126Insert_ID,GenID,一般我用GenID,使用它的目的,是在插入记录后,要马上得到它的ID时,才用   
127*/   
128/*Example:   
129先创建一个列名为user_id_seq的表,里面只有一个字段,id,int(10),NOT NULL,然后插入一条值为0的记录   
130*/   
131$user_id = $db->GenID('user_id_seq');    
132$sql = "Insert table (id, user_type,username) VALUES (" . $user_id . ", 3, 'liucheng')";    
133$db->Execute($sql);    
134   
135/*   
136$rs->RecordCount(),取出记录集总数,无参数   
137它好像是把取出的记录集,用count()数组的方法,取得数据的数量   
138如果取大量数据,效率比较慢,建议使用SQL里的COUNT(*)的方法   
139$sql = "Select COUNT(*) FROM table", 用此方法时,不要在SQL里加ORDER BY,那样会降低执行速度   
140  
141Example:   
142*/   
143$sql = "Select * FROM table orDER BY id DESC";    
144if (!$rs = $db->Execute($sql)) {    
145    echo $db->ErrorMsg();    
146    $db->Close();    
147    exit();    
148}    
149$record_nums = $rs->RecordCount();    
150   
151/*   
152如果想对某一结果集,要进行两次同样的循环处理,可以用下面方法   
153以下,只是一个例子,只为说明$rs->MoveFirst()的使用方法   
154*/   
155$sql = "Select * FROM table orDER BY id DESC";    
156if (!$rs = $db->Execute($sql)) {    
157    echo $db->ErrorMsg();    
158    $db->Close();    
159    exit();    
160}    
161$username_ary = array();    
162while (!$rs->EOF) {    
163    $username_ary[] = $rs->fields['username']    
164    echo $rs->fields['username'. '<br>';//print_r($rs->fields)试试,$rs->fields['字段名'],返回的是这个字段里的值    
165    $rs->MoveNext();//将指针指到下一条记录,不用的话,会出现死循环!    
166}    
167$username_ary = array_unique($username_ary);    
168   
169$rs->MoveFirst();//将指针指回第一条记录    
170while (!$rs->EOF) {    
171    echo $rs->fields['password'. '<br>';//print_r($rs->fields)试试,$rs->fields['字段名'],返回的是这个字段里的值    
172    $rs->MoveNext();//将指针指到下一条记录    
173}    
174$rs->Close();    
175   
176//当本页程序,对数据库的操作完毕后,要$db->Close();    
177$db->Close();    
178   
179/*一个不错的方法 */   
180if (isset($db)) {    
181    $db->Close();    
182}    
183?>  
我要啦免费统计