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 相关文章推荐
PHP中动态显示签名和ip原理
Mar 28 PHP
在PHP中检查PHP文件是否有语法错误的方法
Dec 23 PHP
PHP遍历并打印指定目录下所有文件实例
Feb 10 PHP
php中将一段数据存到一个txt文件中并显示其内容
Aug 15 PHP
推荐25款php中非常有用的类库
Sep 29 PHP
PHP中使用CURL获取页面title例子
Jan 07 PHP
PHP实现抓取迅雷VIP账号的方法
Jul 30 PHP
PHP 生成微信红包代码简单
Mar 25 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
Nov 25 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
Dec 28 PHP
php微信公众号开发之图片回复
Oct 20 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
Sep 02 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 json_encode中文乱码问题的解决办法
2013/09/09 PHP
php根据年月获取当月天数及日期数组的方法
2016/11/30 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
2017/06/02 PHP
基于Laravel 5.2 regex验证的正确写法
2019/09/29 PHP
PHP基于进程控制函数实现多线程
2020/12/09 PHP
date.parse在IE和FF中的区别
2010/07/29 Javascript
Jquery判断IE6等浏览器的代码
2011/04/05 Javascript
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
可在线编辑网页文字效果代码(单击)
2013/03/02 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
2015/03/03 Javascript
jquery+json实现动态商品内容展示的方法
2016/01/14 Javascript
jQuery实现Select左右复制移动内容
2016/08/05 Javascript
原生JS获取元素集合的子元素宽度实例
2016/12/14 Javascript
微信小程序 input输入框详解及简单实例
2017/01/10 Javascript
jQuery实现链接的title快速出现的方法
2017/02/20 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
2017/05/11 Javascript
如何以Angular的姿势打开Font-Awesome详解
2018/04/22 Javascript
vue-router中scrollBehavior的巧妙用法
2018/07/09 Javascript
微信小程序-可移动菜单的实现过程详解
2019/06/24 Javascript
浅析vue-router实现原理及两种模式
2020/02/11 Javascript
Vue脚手架编写试卷页面功能
2020/03/17 Javascript
[00:43]TI7不朽珍藏III——幽鬼不朽展示
2017/07/15 DOTA
python批量添加zabbix Screens的两个脚本分享
2017/01/16 Python
DataFrame中的object转换成float的方法
2018/04/10 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)
2020/04/15 Python
python 弧度与角度互转实例
2020/04/15 Python
5行Python代码实现图像分割的步骤详解
2020/05/25 Python
Node.js 和 Python之间该选择哪个?
2020/08/05 Python
Linux面试题LINUX系统类
2014/11/19 面试题
竞选班干部演讲稿400字
2014/08/20 职场文书
廉政承诺书2015
2015/04/28 职场文书
丧事主持词
2015/07/02 职场文书
Python sklearn分类决策树方法详解
2022/09/23 Python