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";
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