zend framework整合mysql数据库

zend framework非常强悍,它给我们提供了特别多的功能,它基本上可以和java里的SSH三大框架相媲美,zend开始学的时候会觉得特别吃力,因为zend framework的封装度特别高学习起来当然吃力了,这次要分享的内容是zend framework和mysql交互。

1.zend framework使用pdo和mysql交互

因为这个原理我们第一步要确保mysql的pdo扩展库已经启用,怎么启用我就不多说了,为了确保万无一失可以使用phpinfo()查看扩展是否有效。

下面就是配置了首先找到configs下面的application.ini文件,使用zend studio编辑在下面加上这样一段配置:
[mysql]
db.adapter=PDO_MYSQL
db.params.host=localhost
db.params.username=root
db.params.password=123456
db.params.dbname=humansource

中括号里的mysql也可以写成别的,这个名称后面会用到


2.初始化数据库适配器

一般来说需要用到数据库的地方才需要初始化适配器,合理的做法是写在每个控制器的init方法里,但是这样还是很麻烦,因此我打算抽象出一个控制器,在需要使用数据库的控制器再继承这个新的控制器,新控制器如下

<?php
class BaseController extends Zend_Controller_Action
{
    public function init()
    {
        
    	$url = constant("APPLICATION_PATH").DIRECTORY_SEPARATOR.'configs'.DIRECTORY_SEPARATOR.'application.ini';
    	//这个名称要和application.ini配置的相同,我配置的是[mysql]
    	$dbconfig = new Zend_Config_Ini($url , "mysql");
    	$db = Zend_Db::factory( $dbconfig->db);
    	$db->query('set names utf8');
    	Zend_Db_Table::setDefaultAdapter($db);
    }
}


zend framework的控制器必须继承Zend_Controller_Action,如果没继承这个类就不是控制器


3.创建表模型

一般来说一个表对应一个模型,模型的php文件应该写在models文件夹下面,大致配置如下

<?php
class UserModel extends Zend_Db_Table{
	protected $_name='m_user';
	protected $_primary='id';
}
?>

模型层的php也要继承一个类否则就不是模型,这里需要配置一下表名和主键主键的默认字段就是id,如果是这种情况主键可以不配置


4.查询操作

查询操作只需实例化相应模型即可,如果要考虑sql注入的情况可以先取得适配器,之后使用quoteInfo即可,之后使用zend_db_table提供的方法操作就可以了,下面列出查询的几种最基本使用,复杂的用法下次分享给大家


<?php
require_once APPLICATION_PATH."/models/UserModel.php";
require_once APPLICATION_PATH."/controllers/BaseController.php";
class UserController extends BaseController
{

    public function userinfoAction()
    {
        // action body
    }
    //最基本的用法
    public function getalluserAction()
    {
    	$u=new UserModel();
    	
    	echo "----查询全部数据-----";
    	$result=$u->fetchAll()->toArray();
    	echo "<pre>";
    	print_r($result);
    	echo "</pre>";
    	
    	echo "<br/>----条件查询不考虑sql注入的问题-----";
    	$wherecondition="username='pwb'";
    	$result2=$u->fetchAll($wherecondition)->toArray();
    	echo "<pre>";
    	print_r($result2);
    	echo "</pre>";
    	
    	echo "<br/>----条件查询并考虑考虑sql注入的问题-----";
    	//通过模型取得适配器
    	$adapter=$u->getAdapter();
    	//将危险字符进行转义防止sql注入(只有一个参数的情况)
    	$condition=$adapter->quoteInto("username=?", "cyl");
    	$result3=$u->fetchAll($condition)->toArray();
    	echo "<pre>";
    	print_r($result3);
    	echo "</pre>";
    	
    	echo "<br/>----条件查询并考虑考虑sql注入的问题(多个参数)-----";
    	//将危险字符进行转义防止sql注入(只有一个参数的情况)
    	$condition2=$adapter->quoteInto("username=?", "cyl")
    	          .$adapter->quoteInto("and id>?", 1);
    	$result4=$u->fetchAll($condition2)->toArray();
    	echo "<pre>";
    	print_r($result4);
    	echo "</pre>";
    	
    	exit();
    }

}


fetchAll可以使用where条件,order排序等,具体的使用可以参考开发手册。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值