Zend Framework教程之Zend_Db_Table_Row用法实例分析


Posted in PHP onMarch 21, 2016

本文实例讲述了Zend Framework教程之Zend_Db_Table_Row用法。分享给大家供大家参考,具体如下:

1. 简介

Zend_Db_Table_Row是Zend Framework的行数据网关.通常来说,你不可以自己实例化Zend_Db_Table_Row, 而是通过调用Zend_Db_Table::find()方法或者Zend_Db_Table::fetchRow()方法将Zend_Db_Table_Row作为 结果数据返回过来.一旦你得到来一个Zend_Db_Table_Row对象,你可以修改记录值(体现为类的属性)然后 调用save()方法可以将更改保存到原表上.

2. 取回一条记录

首先,需要实例化一个Zend_Db_Table类.

<?php
// 设置一个 adapter
require_once 'Zend/Db.php';
$params = array (
  'host'   => '127.0.0.1',
  'username' => 'malory',
  'password' => '******',
  'dbname'  => 'camelot'
);
$db = Zend_Db::factory('PDO_MYSQL', $params);
// 为所有的Zend_Db_Table对象设置默认adapter
require_once 'Zend/Db/Table.php';
Zend_Db_Table::setDefaultAdapter($db);
// 连接到数据库中的某一个表
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
?>

接下来,使用Zend_Db_Table::find()方法和主键进行查询,或者使 用Zend_Db_Table::fetchRow()方法查询.
得到的返回结果是一个Zend_Db_Table_Row 对象,该对象的属性名采用camelCaps的形式对应数据库中带下划线的表名.
如,表名 若为first_name,那么类中的改属性则为firstName.

<?php
// 从表中取回的结果数据是一个Zend_Db_Table_Row对象
$row = $table->fetchRow('first_name = "Robin"');
//
// $row现在是一个带有多种公有属性的Zend_Db_Table_Row对象
// that map to table columns:
//
// $row->id = '3'
// $row->nobleTitle = 'Sir'
// $row->firstName = 'Robin'
// $row->favoriteColor = 'yellow'
//
?>

3. 修改数据

修改行数据是一件很轻松的事情:只需要按照常规的方法修改类属性.然后调用save()方法 就将改变的结果保存到了数据表中.

<?php
// 连接到数据库中的表
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
// 从表中取回的结果数据是一个Zend_Db_Table_Row对象
$row = $table->fetchRow('first_name = "Robin"');
//
// $row现在是一个带有多种公有属性的Zend_Db_Table_Row对象
// that map to table columns:
//
// $row->id = '3'
// $row->nobleTitle = 'Sir'
// $row->firstName = 'Robin'
// $row->favoriteColor = 'yellow'
//
// 改变favorite color字段,并且将变动存储到数据表中.
$row->favoriteColor = 'blue';
$row->save();
?>

但是,你不能够修改主键的值.假如你试图进行改操作, Zend_Db_Table_Row将抛出一个异常.

<?php
// 连接到数据库中的表
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
// fetch a record from the table as a Zend_Db_Table_Row object
$row = $table->fetchRow('first_name = "Robin"');
// 我们尝试修改主键值
try {
  $row->id = 5;
  echo "We should not see this message, as an exception was thrown.";
} catch (Zend_Db_Table_RowException $e) {
  echo $e->getMessage();
}
?>

希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。

PHP 相关文章推荐
第1次亲密接触PHP5(1)
Oct 09 PHP
PHP+XML 制作简单的留言本 图文教程
Nov 02 PHP
javascript,php获取函数参数对象的代码
Feb 03 PHP
PHP实现数字补零功能的2个函数介绍
May 12 PHP
Codeigniter实现发送带附件的邮件
Mar 19 PHP
列举PHP的Yii 2框架的开发优势
Jul 03 PHP
php获取文件类型和文件信息的方法
Jul 10 PHP
非常全面的php日期时间运算汇总
Nov 04 PHP
微信公众平台DEMO(PHP)
May 04 PHP
PHP关键特性之命名空间实例详解
May 06 PHP
PHP ADODB实现事务处理功能示例
May 25 PHP
Windows服务器中PHP如何安装redis扩展
Sep 27 PHP
Zend Framework教程之Zend_Db_Table用法详解
Mar 21 #PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
Mar 21 #PHP
PHP常见数组函数用法小结
Mar 21 #PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
Mar 20 #PHP
Zend Framework入门知识点小结
Mar 19 #PHP
Zend Framework缓存Cache用法简单实例
Mar 19 #PHP
Zend Framework基本页面布局分析
Mar 19 #PHP
You might like
PHP读取目录下所有文件的代码
2008/01/07 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
php实现的验证码文件类实例
2015/06/18 PHP
php使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
jquery.validate使用攻略 第三部
2010/07/01 Javascript
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
Jquery中Event对象属性小结
2015/02/27 Javascript
jQuery弹出层插件Lightbox_me使用指南
2015/04/21 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
js实现右键菜单功能
2016/11/28 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
使用layui 的layedit定义自己的toolbar方法
2019/09/18 Javascript
JavaScript实现拖拽盒子效果
2020/02/06 Javascript
vue全屏事件开发详解
2020/06/17 Javascript
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
[06:33]3.19 DOTA2发布会 海涛、冷冷、2009见证希望
2014/03/21 DOTA
[48:05]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VGJ.T vs VP
2018/03/31 DOTA
Python pickle模块用法实例
2015/04/14 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
2020/01/07 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
2020/03/13 Python
python使用pymongo与MongoDB基本交互操作示例
2020/04/09 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
2020/04/24 Python
Python转换字典成为对象,可以用&quot;.&quot;方式访问对象属性实例
2020/05/11 Python
美国内衣第一品牌:Hanes(恒适)
2016/07/29 全球购物
电大物流学生的自我评价
2013/10/25 职场文书
大学生自我评价范文分享
2014/02/21 职场文书
秘书英文求职信
2014/04/16 职场文书
李敖北大演讲稿
2014/05/24 职场文书
微信小程序 WeUI扩展组件库的入门教程
2022/04/21 Javascript