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中在数据库中保存Checkbox数据(1)
Oct 09 PHP
为IP查询添加GOOGLE地图功能的代码
Aug 08 PHP
php生成短域名函数
Mar 23 PHP
使用新浪微博API的OAuth认证发布微博实例
Mar 27 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
Aug 31 PHP
Symfony2框架创建项目与模板设置实例详解
Mar 17 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
Mar 25 PHP
WordPress过滤垃圾评论的几种主要方法小结
Jul 11 PHP
PHP递归获取目录内所有文件的实现方法
Nov 01 PHP
PHP自定义函数获取汉字首字母的方法
Dec 01 PHP
php静态成员方法和静态的成员属性的使用方法
Oct 26 PHP
laravel邮件发送的实现代码示例
Jan 31 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
Re:从零开始的异世界生活 第2季 开播啦
2020/07/24 日漫
PHP中的超全局变量
2006/10/09 PHP
PHP默认安装产生系统漏洞
2006/10/09 PHP
54个提高PHP程序运行效率的方法
2015/07/19 PHP
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
javascript+canvas制作九宫格小程序
2014/12/28 Javascript
简单对比分析JavaScript中的apply,call与this的使用
2015/12/04 Javascript
Sea.JS知识总结
2016/05/05 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
jQuery插件imgAreaSelect基础讲解
2017/05/26 jQuery
解决Vue编译时写在style中的路径问题
2017/09/21 Javascript
vue组件中的数据传递方法
2018/05/14 Javascript
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
前后端如何实现登录token拦截校验详解
2018/09/03 Javascript
命令行批量截图Node脚本示例代码
2019/01/25 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
JS实现手写 forEach算法示例
2020/04/29 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
学习和使用python的13个理由
2019/07/30 Python
如何定义TensorFlow输入节点
2020/01/23 Python
详解python 降级到3.6终极解决方案
2020/02/06 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
Python实现密钥密码(加解密)实例详解
2020/04/26 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
2015/03/25 面试题
车间调度岗位职责
2013/11/30 职场文书
大学生思想汇报范文
2013/12/31 职场文书
2014年应届大学生自我评价
2014/01/09 职场文书
《月光启蒙》教学反思
2014/03/01 职场文书
《开国大典》教学反思
2014/04/19 职场文书
2021-4-3课程——SQL Server查询【2】
2021/04/05 SQL Server