常用的php ADODB使用方法集锦


Posted in PHP onMarch 25, 2008
<?php        //定义数据库变量         
$DB_TYPE     = "mysql";         
$DB_HOST     = "localhost";         
$DB_USER     = "root";         
$DB_PASS     = "";         
$DB_DATABASE = "ai-part";         
require_once("../adodb/adodb.inc.php");         
$db = NewADOConnection("$DB_TYPE");//建立数据库对象         
$db->debug = true;//数据库的DEBUG测试,默认值是false         
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;//返回的记录集形式,关联形式         
/***       
返回的记录集形式       
define('ADODB_FETCH_DEFAULT',0);       
define('ADODB_FETCH_NUM',1);       
define('ADODB_FETCH_ASSOC',2);       
define('ADODB_FETCH_BOTH',3);        
以上常量,在adodb.inc.php里定义了,也就是可用"$ADODB_FETCH_MODE=2"方式       
ADODB_FETCH_NUM   返回的记录集中的索引,是数字形式,即数据库字段的排序顺序值       
ADODB_FETCH_ASSOC 返回的记录集中的索引,是原数据库字段名       
ADODB_FETCH_BOTH 和 ADODB_FETCH_DEFAULT 是同时返回以上两种。某些数据库不支持       
An example:        
    $ADODB_FETCH_MODE = ADODB_FETCH_NUM;        
    $rs1 = $db->Execute('select * from table');        
    $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;        
    $rs2 = $db->Execute('select * from table');        
    print_r($rs1->fields); # 返回的数组是: array([0]=>'v0',[1] =>'v1')        
    print_r($rs2->fields); # 返回的数组是: array(['col1']=>'v0',['col2'] =>'v1')        
***/        
//连接数据库,方法有Connect,PConnect,NConnect,一般使用Connect         
if (!@$db->Connect("$DB_HOST", "$DB_USER", "$DB_PASS", "$DB_DATABASE")) {         
    exit('<a href="/">服务器忙,请稍候再访问</a>');         
}         
/*       
$db->  $rs-> 此类的使用方法       
Execute($sql),执行参数中的$sql语句       
SelectLimit($sql,$numrows=-1,$offset=-1) $numrows:取几条记录,$offset,从第几条开始取,一般是用于分页,或只取出几条记录的时候用       
*/        
//Example: 取出多个记录         
$sql = "Select * FROM table orDER BY id DESC";         
if (!$rs = $db->Execute($sql)) {//执行SQL语句,并把结果返回给$rs变量         
    echo $db->ErrorMsg();//这个是打印出错信息         
    $db->Close();//关闭数据库         
    exit();         
}         
while (!$rs->EOF) {//遍历记录集         
    echo $rs->fields['username'] . '<br>';         
      //print_r($rs->fields)试试,$rs->fields['字段名'],返回的是这个字段里的值         
    $rs->MoveNext();//将指针指到下一条记录,否则出现死循环!         
}         
$rs->Close();//关闭以便释放内存         
//插入新记录         
$sql = "Insert table (user_type,username) VALUES (3, 'liucheng')";         
$db->Execute($sql);         
//更新记录         
$sql = "Update table SET user_type=3 Where id=2";         
$db->Execute($sql);         
//删除记录         
$sql = "Delete FROM table Where id=2";         
$db->Execute($sql);         
// 取单个记录         
//$db->GetRow($sql), 取第一条记录,并返回一个数组,出错返回false         
$sql = "Select username,password,user_type FROM table Where id=3";         
$data_ary = $db->GetRow($sql);         
if ($data_ary == false) {         
    echo '没有找到此记录';         
    exit();         
} else {         
    echo $data_ary['username'] . ' ' . $data_ary['password'] . ' ' . $data_ary['user_type'] . '<br>';         
}         
//另一种方法         
$sql = "Select username,password,user_type FROM table Where id=3";         
if (!$rs = $db->Execute($sql)) {         
    echo $db->ErrorMsg();         
    $db->Close();         
    exit();         
}         
if (!$result = $rs->FetchRow()) {         
    echo '没有找到此记录';         
    exit();         
} else {         
    echo $result['username'] . ' ' . $result['password'] . ' ' . $result['user_type'] . '<br>';         
}         
// 取单个字段         
//$db->GetOne($sql) 取出第一条记录的第一个字段的值,出错则返回false         
$sql = "Select COUNT(id) FROM table";         
$record_nums = $db->GetOne($sql);         
echo $record_nums;         
$sql = "Select username,password,user_type FROM table Where user_id=1";         
$result = $db->GetOne($sql);         
echo $result;//打印出username的值         
/*       
在进行添加,修改,删除记录操作时,       
要对字符串型的字段,使用$db->qstr()对用户输入的字符进行处理,       
对数字型字段,要进行数据判断       
更新记录,注意:这是针对php.ini中,magic_quotes被设置为Off的情况,如果不确定,可以使用       
$db->qstr($content,get_magic_quotes_gpc())       
注意:content= 等号右边,没有单引号       
*/        
$sql = "Update table SET content=" . $db->qstr($content) . " Where id=2";         
$db->Execute($sql);         
        
/*$db->Insert_ID(),无参数,返回刚刚插入的那条记录的ID值,仅支持部分数据库,带auto-increment功能的数据库,如PostgreSQL, MySQL 和 MS SQL        
*/        
//Example:         
$sql = "Insert table (user_type,username) VALUES (3, 'liucheng')";         
$db->Execute($sql);         
$data_id = $db->Insert_ID();         
echo $data_id;         
/*$db->GenID($seqName = 'adodbseq',$startID=1),产生一个ID值.$seqName:用于产生此ID的数据库表名,$startID:起始值,一般不用设置,它会把$seqName中的值自动加1.支持部分数据库,某些数据库不支持       
Insert_ID,GenID,一般我用GenID,使用它的目的,是在插入记录后,要马上得到它的ID时,才用       
*/        
/*Example:       
先创建一个列名为user_id_seq的表,里面只有一个字段,id,int(10),NOT NULL,然后插入一条值为0的记录       
*/        
$user_id = $db->GenID('user_id_seq');         
$sql = "Insert table (id, user_type,username) VALUES (" . $user_id . ", 3, 'liucheng')";         
$db->Execute($sql);         
/*       
$rs->RecordCount(),取出记录集总数,无参数       
它好像是把取出的记录集,用count()数组的方法,取得数据的数量       
如果取大量数据,效率比较慢,建议使用SQL里的COUNT(*)的方法       
$sql = "Select COUNT(*) FROM table", 用此方法时,不要在SQL里加ORDER BY,那样会降低执行速度       
Example:       
*/        
$sql = "Select * FROM table orDER BY id DESC";         
if (!$rs = $db->Execute($sql)) {         
    echo $db->ErrorMsg();         
    $db->Close();         
    exit();         
}         
$record_nums = $rs->RecordCount();         
/*       
如果想对某一结果集,要进行两次同样的循环处理,可以用下面方法       
以下,只是一个例子,只为说明$rs->MoveFirst()的使用方法       
*/        
$sql = "Select * FROM table orDER BY id DESC";         
if (!$rs = $db->Execute($sql)) {         
    echo $db->ErrorMsg();         
    $db->Close();         
    exit();         
}         
$username_ary = array();         
while (!$rs->EOF) {         
    $username_ary[] = $rs->fields['username']         
    echo $rs->fields['username'] . '<br>';//print_r($rs->fields)试试,$rs->fields['字段名'],返回的是这个字段里的值         
    $rs->MoveNext();//将指针指到下一条记录,不用的话,会出现死循环!         
}         
$username_ary = array_unique($username_ary);         
$rs->MoveFirst();//将指针指回第一条记录         
while (!$rs->EOF) {         
    echo $rs->fields['password'] . '<br>';//print_r($rs->fields)试试,$rs->fields['字段名'],返回的是这个字段里的值         
    $rs->MoveNext();//将指针指到下一条记录         
}         
$rs->Close();         
//当本页程序,对数据库的操作完毕后,要$db->Close();         
$db->Close();         
/*一个不错的方法 */        
if (isset($db)) {         
    $db->Close();         
}         
?> 
PHP 相关文章推荐
让PHP支持断点续传的源码
May 16 PHP
PHP版网站缓存加快打开速度的方法分享
Jun 03 PHP
php 获取SWF动画截图示例代码
Feb 10 PHP
ThinkPHP模板判断输出Present标签用法详解
Jun 30 PHP
php防止恶意刷新与刷票的方法
Nov 21 PHP
php判断文件夹是否存在不存在则创建
Apr 09 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
Dec 02 PHP
PHP+ajax分页实例简析
Dec 07 PHP
浅析Laravel5中队列的配置及使用
Aug 04 PHP
thinkPHP框架实现多表查询的方法
Jun 14 PHP
php 将json格式数据转换成数组的方法
Aug 21 PHP
PHP 裁剪图片
Mar 09 PHP
PHP中ADODB类详解
Mar 25 #PHP
php下判断数组中是否存在相同的值array_unique
Mar 25 #PHP
php获取mysql版本的几种方法小结
Mar 25 #PHP
非常不错的MySQL优化的8条经验
Mar 24 #PHP
php不用正则采集速度探究总结
Mar 24 #PHP
php木马攻击防御之道
Mar 24 #PHP
php入门小知识
Mar 24 #PHP
You might like
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
比较详细PHP生成静态页面教程
2012/01/10 PHP
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
javascript图像处理—仿射变换深度理解
2013/01/16 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
jquery调取json数据实现省市级联的方法
2015/01/29 Javascript
jQuery简单验证上传文件大小及类型的方法
2016/06/02 Javascript
完美的js div拖拽实例代码
2016/09/24 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
2017/03/28 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
vue axios请求超时的正确处理方法
2018/04/02 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
js 将线性数据转为树形的示例代码
2019/05/28 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
Vant 中的Toast设置全局的延迟时间操作
2020/11/04 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
python使用PyV8执行javascript代码示例分享
2013/12/04 Python
Python线程指南详细介绍
2017/01/05 Python
Python实现的求解最小公倍数算法示例
2018/05/03 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
Tory Burch英国官方网站:美国时尚生活品牌
2017/12/06 全球购物
詹天佑教学反思
2014/04/30 职场文书
生物技术专业求职信
2014/06/10 职场文书
本科毕业生应聘自荐信范文
2014/06/26 职场文书
2015年度绩效考核工作总结
2015/05/27 职场文书
2017春节晚会开幕词
2016/03/03 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书
Redis命令处理过程源码解析
2022/02/12 Redis
Python中的datetime包与time包包和模块详情
2022/02/28 Python
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang