zend db的使用

fetchAll($sql):取回结果集中所有字段的值,作为连续数组返回
fetchAssoc($sql):取回结果集中所有字段的值,作为关联数组返回 fetchCol($sql):取回所有结果行的第一个字段名 fetchOne($sql):只取回第一个字段值
fetchPairs($sql):取回一个相关数组,第一个字段值为码 第二个字段为值 fetchRow($sql):只取回结果集的第一行
 
quoteInto('..?..',$value):添加引号防止数据库攻击 
insert( $arrParams ) 
    $arrParams:关联数组, key是数据库字段     return:lastInsertId
 
update( $arrParams,$strSqlWhere )
    $arrParams:关联数组, key是数据库字段     $strSqlWhere:条件 
delete( $strSqlWhere )     $strSqlWhere:条件 
 
insert()不能返回lastInsertId值, 需要设置 (2008-11-6 andy)     class Assessments extends Zend_Db_Table     {
        protected $_name = "assessments";
        protected $_primary = "id";
        //这里设置成0 暂时这样解决 library\Zend\Db\Table\Abstract.php line 783         protected $_identity = 0;         protected $_db = null;     }  
require_once 'Zend/Db/Table.php';
Zend_Db_Table::setDefaultAdapter($db); 
class RoundTable extends Zend_Db_Table {} $table = new RoundTable();
 
protected $_name = 'another_table_name'; protected $_primary = 'another_column_name'; protected function _setup()
{
    $this->_name = 'another_table_name';
    $this->_primary = 'another_column_name';


    parent::_setup(); } 
$data = array(
    'noble_title' => 'King',     'first_name' => 'Arthur',     'favorite_color' => 'blue', );
$set = array(
    'favorite_color' => 'yellow',
)
$where = $db->quoteInto('first_name = ?', 'Robin'); $order = 'favorite_color'; $count = 10; $offset = 20; 
$id = $table->insert($data);
$rows_affected = $table->update($set, $where);  $rows_affected = $table->delete($where); $row = $table->find(1);
$rowset = $table->find(array(1, 2, 3)); 
$row = $table->fetchRow($where, $order);
$rowset = $table->fetchAll($where, $order, $count, $offset);  
where条件分句
 
    不自动加引号处理,需手动处理
    $where = $db->quoteInto('first_name = ?', 'Robin');     其他的insert,update都自动加引号处理
 
Zend_Db_Table 是Zend Framework的表模块.它通过zend_db_adapter连接到 数据库,为数据库模式检查表对象,并对该表进行操作和查询.
zend_db_table为抽象类,不能直接实例化,只能先继承该类,然后实例化子类  
使用 
    require_once 'Zend/Db/Table.php';     Zend_Db_Table::setDefaultAdapter($db); 
    class RoundTable extends Zend_Db_Table {}     $table = new RoundTable();



表名和主键
 
    默认其类名当作数据库中表名
    SomeTableName的zend_db_table类在 数据库中就对应表”some_table_name”.
    假如不希望将类名与数据库表名以这种添加下划线的形式进行对应,可以在定义该类时对$_name进行重构
    默认字段”id”为表的主键,$_primary进行重构 
        protected $_name = 'another_table_name';
        protected $_primary = 'another_column_name'; 
    或者通过_setup()方法设定 
        protected function _setup()
        {
            $this->_name = 'another_table_name';
            $this->_primary = 'another_column_name';             parent::_setup();         }
 
insert() 插入数据
 
    insert()方法,列名:数据的关联数组作为参数
    自动加引号处理, 并返回插入的最后一行的id值(注意:这里不同于 zend_db_adapter::insert方法,后者返回的是插入的行数). 
    $data = array(
        'noble_title' => 'King',         'first_name' => 'Arthur',         'favorite_color' => 'blue',     )
    $id = $table->insert($data); 
 
update() 更新数据 
    update()方法,列名:数据的关联数组作为参数,通过一个where条件从句来决定需要改变的行,返回被修改的行数
    自动加引号处理,检查不包括条件分句, 
    $table = new RoundTable();


    $db = $table->getAdapter();
    $set = array(
        'favorite_color' => 'yellow',     )
    $where = $db->quoteInto('first_name = ?', 'Robin');     $rows_affected = $table->update($set, $where); 
 
delete() 删除数据
 
    delete()方法,通过一个where条件分句来决定需要删除的行.该方法将会返回被删除的行数 
    $where = $db->quoteInto('first_name = ?', 'Patsy');     $rows_affected = $table->delete($where);  
find() 根据主键查找数据
 
    find()方法,可以使用主键值在表中检索数据.     查询某一条数据,返回一个zend_db_table_row对象     查询多条记录时,返回一个zend_db_table_rowset对象 
    // SELECT * FROM round_table WHERE id = "1"     $row = $table->find(1); 
    // SELECT * FROM round_table WHERE id IN("1", "2", 3")     $rowset = $table->find(array(1, 2, 3));  
fetchRow() 取回一条记录 
    非主键的条件查找数据行
 
    fetchRow()方法,返回满足条件的第一行数据的zend_db_table_row对象 
    $where = $db->quoteInto('noble_title = ?', 'Sir')            . $db->quoteInto('AND first_name = ?', 'Robin');     $order = 'favorite_color';
    $row = $table->fetchRow($where, $order); 
 
fetchAll() 取回多条记录
 
    fetchAll(),返回Zend_Db_Table_Rowset对象


    // SELECT * FROM round_table     //     WHERE noble_title = "Sir"     //     ORDER BY first_name     //     LIMIT 10 OFFSET 20
    $where = $db->quoteInto('noble_title = ?', 'Sir');     $order = 'first_name';     $count = 10;     $offset = 20;
    $rowset = $table->fetchAll($where, $order, $count, $offset);  
重载 
    重载insert()和update()方法 
    public function insert($data)     {
        // 添加一个时间戳
        if (empty($data['created_on'])) {             $data['created_on'] = time();         }
        return parent::insert($data);     } 
    public function update($data)     {
        // 添加一个时间戳
        if (empty($data['updated_on'])) {             $data['updated_on'] = time();         }
        return parent::update($data);     } 
 
设定自己的find()方法,通过主键外的其他字段来查询数据. 
    public function findAllWithName($name)     {
        $db = $this->getAdapter();
        $where = $db->quoteInto("name = ?", $name);         $order = "first_name";

        return $this->fetchAll($where, $order);     }


其它参考的文章链接:

http://wenku.baidu.com/view/af7c018da0116c175f0e48a3.html

http://www.php100.com/manual/ZendFramework/

http://framework.zend.com/manual/1.12/zh/zend.db.select.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值