了解一下ADOdb的active record

文章分类:misc  查看次数:412 + 92

是一个php的数据库抽象类,也有python版本,这里讨论的是php版。

老家在:http://adodb.sourceforge.net/主要是为快速开发而设计的,同时兼容各类主流数据库软件。

我比较喜欢里面的模式,这个是模仿Zend Framework的Zend_Db_DataObject,最主要的优点就是几乎不用写SQL语句,把主要精力集中在数据的处理上,而不是与数据库的交互上。也就是所谓的ORM

这里只是简要概括一下主要功能,更详细的应用请参考文档

地址:http://phplens.com/lens/adodb/docs-active-record.htm

首先引入两个文件,然后建立ADO连接,并设置默认的适配器

require("..//-active-record.inc.php");
require("..//.inc.php");
$db =NewADOConnection('mysql://root:123456@localhost/test');
ADOdb_Active_Record::SetDatabaseAdapter($db);
 

然后就可以继承父类了

class Mydb extends ADOdb_Active_Record(){$_table = "my_db"}
 

如果不设置$_table的话,那么数据库的表名就是类名,在这里就是mydb(类名要大写,表名会自动转换成小写)
这样设置了后,就可以很方便地操作数据库了,比如要添加一条新的记录,可以执行

$my_db = new Mydb();
$my_db->title="something new";
$my_db->create = time();
$my_db->save();
 

需要注意的是,对于数据库中设置的not null的字段,一定不能为null,不然会报错。

查看新插入的id(如果主键是其他值,用该值替换id即可)

echo $my_db->id;
 

如果要更新某条记录

//先载入该条记录
$my_db->load("id=1");
$my->db->titile = "updated value";
$my_db->save();
 

这样就完成了对id=1的记录的更新

如果要删除一条记录

$my_db->id=1;
$my_db->delete();

这样就完成了删除

如果还要添加自己的方法,可以在Mydb里定义,比如选择多条数据

function GetRows($whereorderby="1=1",$field="*"){
if($field!="*"){
if(is_array($field)){
$field = implode(",",$field);
}
}
$db =& $this->DB();if(!$db) return false;
$rs = $db->Execute("select $field from $this->_table where $whereorderby");
return $rs->GetRows();

}

可以这么调用:

$data = $date->GetRows("id>30","title")

当然也可以自己定义删除多条数据的函数。

就先讲这么多啦,发点牢骚,官方的说明文档真是太简明扼要了,而且有好些功能应该加进去,比如选取多条记录和删除多条记录,而不是让我们在子类中再去实现。

评论

发表评论