常用的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应用提速面面观
Oct 09 PHP
Windows2003 下 MySQL 数据库每天自动备份
Dec 21 PHP
php学习笔记之 函数声明
Jun 09 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
Jul 03 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
Sep 23 PHP
PHP抓屏函数实现屏幕快照代码分享
Jan 02 PHP
php数组去除空值函数分享
Feb 02 PHP
php实现parent调用父类的构造方法与被覆写的方法
Feb 11 PHP
ThinkPHP中limit()使用方法详解
Apr 19 PHP
PHP页面输出搜索后跳转下一页的处理方法
Sep 30 PHP
Laravel配置全局公共函数的方法步骤
May 09 PHP
Yii 框架使用Forms操作详解
May 18 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
使用php shell命令合并图片的代码
2011/06/23 PHP
PHP 数组和字符串互相转换实现方法
2013/03/26 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
prototype Element学习笔记(篇二)
2008/10/26 Javascript
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
yepnope.js 异步加载资源文件
2011/09/08 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
JavaScript日期时间与时间戳的转换函数分享
2015/01/31 Javascript
PageSwitch插件实现100种不同图片切换效果
2015/07/28 Javascript
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
JavaScript面试开发常用的知识点总结
2016/08/08 Javascript
jquery+css3问卷答题卡翻页动画效果示例
2016/10/26 Javascript
前端分页功能的实现以及原理(jQuery)
2017/01/22 Javascript
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
2018/03/01 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
layui的table中显示图片方法
2018/08/17 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
2019/05/10 Javascript
JS中使用react-tooltip插件实现鼠标悬浮显示框
2019/05/15 Javascript
angular组件间通讯的实现方法示例
2020/05/07 Javascript
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
Python中不同进制的语法及转换方法分析
2016/07/27 Python
python查看列的唯一值方法
2018/07/17 Python
对pandas中Series的map函数详解
2018/07/25 Python
python使用tornado实现简单爬虫
2018/07/28 Python
HTML5边玩边学(2)基础绘图实现方法
2010/09/21 HTML / CSS
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
幼儿园消防安全制度
2014/01/26 职场文书
学习十八大报告感言
2014/02/04 职场文书
商业计算机应用专业自荐书
2014/06/09 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
代办社保委托书范文
2014/10/06 职场文书
redis通过6379端口无法连接服务器(redis-server.exe闪退)
2021/05/08 Redis
Spring中的@Transactional的工作原理
2022/06/05 Java/Android