Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)


Posted in PHP onMarch 21, 2016

本文实例讲述了Zend Framework教程之连接数据库并执行增删查的方法。分享给大家供大家参考,具体如下:

我们先要在数据库里建立一个叫message的表,它有三个字段.分别为id,title,content.其中id为主键.

现在我们开始第一步:在application文件夹下面加入一个config文件夹,并在这里面增加一个config.ini文件..这里面是配置数据库基本信息.

如下代码所示:

[general]
db.adapter=PDO_MYSQL //请开启PDO扩展
db.config.host=localhost //Mysql主机
db.config.username=root //用户名
db.config.password= //密码,我这里为空
db.config.dbname=zendoophp //数据库名

第二步:在application下的models文件夹下增加一个Message.php文件..这里命名是以数据表名称相同.

<?php
class Message extends Zend_Db_Table {
protected $_name ="message";
protected $_primary = 'id';
}

第三步:接下来..我们要在我们的入口文件index.php里加入下面代码如下:

//配置数据库参数,并连接数据库 
$config=new Zend_Config_Ini('./application/config/config.ini',null, true); 
Zend_Registry::set('config',$config); 
$dbAdapter=Zend_Db::factory($config->general->db->adapter,
$config->general->db->config->toArray()); 
$dbAdapter->query('SET NAMES UTF8'); 
Zend_Db_Table::setDefaultAdapter($dbAdapter); 
Zend_Registry::set('dbAdapter',$dbAdapter);

第四步:我们就要对我们的IndexController.php控制器进行操作了..分别有四个方法.它们的作用就是增加数据,修改,

删除数据.程序如下..(我在程序员都有注解.这里不就多说!):

class IndexController extends Zend_Controller_Action 
{ 
 function init() 
 { 
  $this->registry = Zend_Registry::getInstance(); 
  $this->view = $this->registry['view']; 
  $this->view->baseUrl = $this->_request->getBaseUrl(); 
 } 
 function indexAction() 
 {  
  $message=new message();//实例化数据库类 
  //这里给变量赋值,在index.phtml模板里显示 
  $this->view->bodyTitle = 'Hello World!'; 
  //取到所有数据.二维数组 
  $this->view->messages=$message->fetchAll()->toArray(); 
  //print_r( $this->view->messages); 
  echo $this->view->render('index.phtml');//显示模版 
 } 
 function addAction(){ 
 //如果是POST过来的值.就增加.否则就显示增加页面 
 if(strtolower($_SERVER['REQUEST_METHOD'])=='post'){ 
 //过滤一些数据.不过这里还有检测一些动作没有做..
 //请大家加了..我就不多写那么多了.时间关系.. 
 Zend_Loader::loadClass('Zend_Filter_StripTags'); 
 $filter=new Zend_Filter_StripTags(); 
 $content=$filter->filter(($this->_request->getPost('content'))); 
 $title=$filter->filter(($this->_request->getPost('title'))); 
 $message=new Message(); 
 $data=array( 
 'content'=>$content, 
 'title'=>$title 
 );
 $message->insert($data); 
 unset($data); 
 echo '您增加数据成功!请您 
 $this->view->baseUrl.'/index/index/">返回'; 
  }else{ 
   echo $this->view->render('add.phtml');//显示增加模版 
  } 
 } 
 public function editAction(){ 
 $message=new Message(); 
 $db = $message->getAdapter(); 
 Zend_Loader::loadClass('Zend_Filter_StripTags'); 
 $filter=new Zend_Filter_StripTags(); 
 //同上面addAction 
 if(strtolower($_SERVER['REQUEST_METHOD'])=='post'){ 
 $content=$filter->filter(($this->_request->getPost('content'))); 
 $title=$filter->filter(($this->_request->getPost('title'))); 
 $id=$filter->filter(($this->_request->getPost('id'))); 
  $set=array( 
  'content'=>$content, 
  'title'=>$title 
 ); 
 $where = $db->quoteInto('id = ?', $id); 
 //更新表数据 
 $message->update($set, $where) 
 unset($set);  echo '您修改数据成功!请您 
 $this->view->baseUrl.'/index/index/">返回'; 
 }else{ 
  $id=$filter->filter(($this->_request->getParam('id'))); 
 $this->view->messages=$message->fetchAll('id='.$id)->toArray(); 
  echo $this->view->render('edit.phtml');//显示编辑模版 
   } 
 } 
public function delAction() 
{ $message=new Message(); 
 //能过ID删除数据.这里有一些动作没有做.比如说没有ID页面要去哪里. 
  //.我只是给大家一个思想..所以不会那么完整 
 $id = (int)$this->_request->getParam('id'); 
 if ($id > 0) { 
   $where = 'id = ' . $id; 
   $message->delete($where); 
 } 
 echo '您删除数据成功!请您 
 $this->view->baseUrl.'/index/index/">返回'; 
 } 
}

第五步:就是增加对应的View.也就是网页模板..分别是add.phtml,edit.phtml,index.phtml.这在程序里也有注解.请大家下载文件运行查看.

完整实例代码点击此处本站下载。

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

PHP 相关文章推荐
PHP数组及条件,循环语句学习
Nov 11 PHP
php不允许用户提交空表单(php空值判断)
Nov 12 PHP
php实例分享之html转为rtf格式
Jun 02 PHP
PHP中使用break跳出多重循环代码实例
Jan 21 PHP
php使用APC实现实时上传进度条功能
Oct 26 PHP
在php中设置session用memcache来存储的方法总结
Jan 14 PHP
php错误日志简单配置方法
Jul 11 PHP
PHP session会话操作技巧小结
Sep 27 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
php使用yield对性能提升的测试实例分析
Sep 19 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
Apr 23 PHP
php中pcntl_fork详解
Apr 01 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
Mar 21 #PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
Mar 21 #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
You might like
关于IIS php调用com组件的权限问题
2012/01/11 PHP
ThinkPHP框架实现session跨域问题的解决方法
2014/07/01 PHP
关于PHP内置的字符串处理函数详解
2017/02/04 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
angularjs指令中的compile与link函数详解
2014/12/06 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
浅谈JavaScript 数据属性和访问器属性
2016/09/01 Javascript
bootstrap网格系统使用方法解析
2017/01/13 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
微信小程序request出现400的问题解决办法
2017/05/23 Javascript
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
微信小程序实现滑动翻页效果(完整代码)
2019/12/06 Javascript
js实现中文实时时钟
2020/01/15 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
[01:03:50]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第二场 2月7日
2021/03/11 DOTA
Python实现短网址ShortUrl的Hash运算实例讲解
2015/08/10 Python
浅谈python中的面向对象和类的基本语法
2016/06/13 Python
深入解析Python中的线程同步方法
2016/06/14 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
浅谈python 里面的单下划线与双下划线的区别
2017/12/01 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
Python文字截图识别OCR工具实例解析
2020/03/05 Python
python3通过udp实现组播数据的发送和接收操作
2020/05/05 Python
HTML5 Canvas中绘制椭圆的4种方法
2015/04/24 HTML / CSS
商务英语应届生自我鉴定
2013/12/08 职场文书
开会迟到检讨书
2014/01/08 职场文书
保险经纪人求职信
2014/03/11 职场文书
新店开张活动方案
2014/08/24 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书
浅谈redis缓存在项目中的使用
2021/05/20 Redis
如何解决.cuda()加载用时很长的问题
2021/05/24 Python
JavaScript函数柯里化
2021/11/07 Javascript