淡水河边 2007-12-18 17:05
淡水河边php视频教程进阶篇04【adodb类的使用】
讲解了著名的php开源项目ADODB类,ADODB是php的一个数据库抽象类,下面先对他简介一下。
[quote]
虽然 PHP 是建构 Web 系统强有力的工具,但是 PHP 存取数据库的功能,一直未能标准化,每一种数据库,都使用另一种不同且不兼容的应用程序接口(API)。为了填补这个缺憾,因此才有 ADODB 的出现。一旦存取数据库的接口予以标准化,就能隐藏各种数据库的差异,若欲转换至其它不同的数据库,将变得十分容易。
目前 ADODB 支持的数据库种类非常地多,例如:MySQL, PostgreSQL, Interbase, Informix, oracle, MS SQL7, Foxpro, Access, ADO, Sybase, DB2 以及一般的 ODBC。
[color=red]使用 ADODB 最大的优点之一是:不管后端数据库如何,存取数据库的方式都是一致的,开发设计人员不必为了某一套数据库,而必须再学习另一套不同的存取方法,这大大减轻开发人员的知识负担,过去的知识往后仍可继续使用,转移数据库平台时,程序代码也不必做太大的更动。[/color]
[/quote]
由[url=http://www.tsingfeng.com/]淡水河边[/url]在[url=http://www.dophp.net/]php同盟会[/url]首发,原创作品,转载请注明出处并保留链接,请勿用于商业用途。
无需积分,回复下载。(无奈,好多朋友都给我提出要求了。)
下载地址: **** Hidden Message *****http://www.dophp.net/soft/www.dophp.net_adodb_bytsingfeng.com.rar[/url]
源码:[php]//============================
// Filename: adodb_demo.php
// Version : 0.0.1
// Author : 淡水河边
// Update : 2007-12-15
// Content : PHP by Editplus
//============================
//定义数据库变量
$DB_TYPE = "mysql";
$DB_HOST = "localhost";
$DB_USER = "root";
$DB_PASS = "";
$DB_DATABASE = "test";
require_once("./adodb/adodb.inc.php");
$db = NewADOConnection("$DB_TYPE");//建立数据库对象
$db->debug = true;//数据库的DEBUG测试,默认值是false
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;//返回的记录集形式,关联形式
//连接数据库,方法有Connect,PConnect,一般使用Connect
if (!@$db->Connect("$DB_HOST", "$DB_USER", "$DB_PASS", "$DB_DATABASE")) {
exit('[url=/]服务器忙,请稍候再访问[/url]');
}
//取出多个记录
$sql = "SELECT * FROM guestbook ORDER BY id DESC";
if (!$rs = $db->Execute($sql)) {//执行SQL语句,并把结果返回给$rs变量
echo $db->ErrorMsg();//这个是打印出错信息
$db->Close();//关闭数据库
exit();
}
while (!$rs->EOF) {//遍历记录集
echo $rs->fields['username'] . '
';
$rs->MoveNext();//将指针指到下一条记录,否则出现死循环!
}
$rs->Close();//关闭以便释放内存
//插入新记录
$sql = "INSERT guestbook (title,body) VALUES ('www.tsingfeng.com', 'www.dophp.net')";
$db->Execute($sql);
//更新记录
$sql = "UPDATE guestbook SET title='php同盟会' Where id=1";
$db->Execute($sql);
//删除记录
$sql = "DELETE FROM guestbook WHERE id=1";
$db->Execute($sql);
// 取一条记录
//$db->GetRow($sql), 取第一条记录,并返回一个数组,出错返回false
$sql = "SELETE title,body FROM guestbook WHERE id=2";
$data_ary = $db->GetRow($sql);
if ($data_ary == false) {
echo '没有找到此记录';
exit();
} else {
echo $data_ary['title'] . ' ' . $data_ary['body'] . '
';
}
//另一种方法(笨笨的)
$sql = "SELETE title,body FROM guestbook WHERE id=2";
if (!$rs = $db->Execute($sql)) {
echo $db->ErrorMsg();
$db->Close();
exit();
}
if (!$result = $rs->FetchRow()) {
echo '没有找到此记录';
exit();
} else {
echo $result['title'] . ' ' . $result['body'] . '
';
}
// 取单个字段
//$db->GetOne($sql) 取出第一条记录的第一个字段的值,出错则返回false
$sql = "SELECT COUNT(id) FROM guestbook";
$record_nums = $db->GetOne($sql);
echo $record_nums;
$sql = "SELECT title FROM guestbook WHERE id=1";
$result = $db->GetOne($sql);
echo $result;//打印出title的值
/*
$db->Insert_ID(),返回刚刚插入的那条记录的ID值
仅支持部分数据库,带auto-increment功能的数据库,如PostgreSQL, MySQL 和 MS SQL
*/
$sql = "Insert guestbook (title,body) VALUES ('淡水河边', 'I love PHP')";
$db->Execute($sql);
$data_id = $db->Insert_ID();
echo $data_id;
/*
$rs->RecordCount(),取出记录集总数,无参数
*/
$sql = "Select * FROM guestbook ORDER BY id DESC";
if (!$rs = $db->Execute($sql)) {
echo $db->ErrorMsg();
$db->Close();
exit();
}
$record_nums = $rs->RecordCount();
/*
如果想对某一结果集,要进行两次同样的循环处理,可以用下面方法
以下,只是一个例子,只为说明$rs->MoveFirst()的使用方法
*/
$sql = "SELECT * FROM guestbokk ORDER BY id DESC";
if (!$rs = $db->Execute($sql)) {
echo $db->ErrorMsg();
$db->Close();
exit();
}
while (!$rs->EOF) {
echo $rs->fields['title'] . '
';
$rs->MoveNext();//将指针指到下一条记录
}
$rs->MoveFirst();//将指针指回第一条记录
while (!$rs->EOF) {
echo $rs->fields['body'] . '
';
$rs->MoveNext();//将指针指到下一条记录
}
$rs->Close();
//当本页程序,对数据库的操作完毕后,要$db->Close();
if (isset($db)) {
$db->Close();
}
?>[/php]
离群的猴子 2007-12-18 17:24
我来给你顶住,谢谢了,辛苦了,喝口茶休息一下。:lol
极品黑公子 2007-12-18 17:39
好位置全是自己的,:@ 小所,我把挪到第一个去吧:lol
robin 2007-12-18 17:46
一般沙发是我做的
无奈今天连地板都没得坐
FTP无法上传了
在联系远方
希望远方冒个泡赶紧处理了
liexusong 2007-12-20 12:26
谢谢~~~~~~~~~~
lxylxy8866 2007-12-21 07:37
忘了来顶了,
非常滴不好意思……
现在不迟吧,:lol :lol
zj4423389 2007-12-21 09:27
FFJ
VB S JJJJJJJJjjjjimc
qyx 2007-12-21 15:44
顶~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lindyhegang 2007-12-27 10:17
谢谢 大师:lol
cain 2007-12-31 23:04
都时候老熟人了,,还搞这个干嘛??
还得回复!???