您好,UncleToo欢迎您!  为了更好的浏览本站,请使用高版本浏览器
RSS  Tag     设为首页 | 加入收藏
 您所在的位置:首页 > PHP框架 > ZendFramework

ZendFramework框架操作数据库常用函数

作者:  来源:互联网  日期:2013-11-01 20:01:05
收藏  评论:( 0 )  阅读:288

ZendFramework框架操作数据库常用函数  

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();


表名和主键

默认其类名当作数据库中表名
   SomeTableNamezend_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);
   }



除非特别声明,本站所有PHP教程及其他教程/文章均为原创、翻译或网友投稿,版权均归UncleToo中文网所有, 转载请注明作者及出处。
原文网址:http://www.uncletoo.com/html/zend/517.html
读完这篇文章后,你是否有所收获? 分享是一种生活的信念!
  • 0
  • 0
我来说两句
更多>>网友评论
UncleToo,一档有态度的PHP中文网

图片教程