标题: Zend Framework中对Oracle的操作简单操作总结
  本主题由 haohappy 于 2007-12-22 23:56 加入精华 
ringtail
PHPEye Developer
Rank: 8Rank: 8



UID 3
精华 1
积分 10
帖子 9
翻译 9
原创 0
阅读权限 1
注册 2007-5-2
状态 离线
发表于 2007-12-22 23:37  资料  短消息  加为好友 
Zend Framework中对Oracle的操作简单操作总结

呵呵,自己blog上写的,摘了部分,贴过来希望有高手指教。
原文地址:http://blog.xmulib.org/ringtail/2007/12/zend-frameworkoracle.html

2.插入数据
无论是DB还是Table类,都使用insert()方法。
对于Oracle来说,如果要使用sequence作为自增的主键的话,需要使用trigger。
比如,有tag表,主键为tagid,其对应的sequence为tag_seq,要插入数据时,需要先新建trigger:

create or replace trigger tag_tri
before insert on tag
for each row
declare
nextid number;
begin
IF :new.tagid IS NULL or :new.tagid=0 THEN
select tag_seq.nextval
into nextid
from sys.dual;
:new.tagid:=nextid;
end if;
end tag_tri;

其余部分和插入其它数据库相同

PHP代码如下:

<?php
$table_name
='TAG';
$row = array (
        
'TAGNAME'   => $tagname,
        
'TAGTOTAL'  => '1'
    
);
$this->db->insert($table_name,$row);
?>


3.更新数据
3.1直接执行update语句,参见文档。
3.2如果update语句中,有包含数据库的特殊关键字时,需要先将数据选出,然后再更新

PHP代码如下:

<?php
    $where 
$this->db->quoteInto('tagname = ?',$tagname);
               
//如果只取一行的话,用fetchRow()就可以了
    
$rowset $this->tag->fetchAll($where);
    
$count=$rowset->count();
    
$tag $rowset->current();                    
    if(
$count!=0){
        
$tagid=$tag->TAGID;
        
//tagtotal+1
                
        
$tag->TAGTOTAL ++;  //应判断一下当前用户是否
        
$tag->save();    
    }
?>


4.删除数据

PHP代码如下:

<?php
    
//删除已有的collect表中记录
    // where条件语句
    
$where $this->db->quoteInto('USERID = ?'$userid)
        .
$this->db->quoteInto('AND LINKID = ?'$linkid);

    
// 删除数据并得到影响的行数
    
$rows_affected =  $this->collect->delete($where);
?>


总结完毕:
tips:
注意表名、字段名等的大小写!

顶部
 


PHPEye开源社区


当前时区 GMT+8, 现在时间是 2008-12-5 08:38

    Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
Processed in 0.027969 second(s), 7 queries , Gzip enabled

清除 Cookies - 联系我们 - PHPEye开源社区 - Archiver