Zend_Db_Table的其他操作(删除、修改、sql语句查询)

昨天分享了zend framework整合mysql的文章,大家都应该学会了吧,在昨天的文章中也有说到几种基本的查询方式。这次接着分享相关的修改,插入,删除,sql语句查询这几种操作

1.插入数据

插入数据一般不涉及到sql注入的问题,这样就要求客户端和服务端的验证要严谨,zf插入数据直接使用insert就OK了,这个方法需要传入一个关联数组,数组的key就是对应表的列名,步骤是先实例化模型再创建一个关联数组,接着调用insert方法就可以了,代码如下:

    $set=array(
    		"name"=>"测试管理员1",
    		"remark"=>"1号测试人员"
       );
    		 
    $role->insert($set);
    echo "插入数据成功";


来看看数据库里数据插入成功没有


2.删除数据

这个操作更简单直接使用insert方法就行,这个方法可以传入一个where条件

$adapter=$role->getAdapter();
    		$where=$adapter->quoteInto("name=?", "测试管理员1");
    		$role->delete($where);
    		echo "删除成功";

3.更新数据

这种情况直接使用update就行,这个方法需要传入要修改的字段(以数组的形式),以及一个where条件,代码如下

$id=$this->getRequest()->getParam("id");
    	$role=new RoleModel();
    	$adapter=$role->getAdapter();
    	$set=array(
    		"name"=>"超级管理员"
    	);
    	$where=$adapter->quoteInto("id=?", $id);
    	$role->update($set, $where);
    	$this->render("updaterole");

这些操作一般都要考虑一下sql注入,这种情况必须使用adapter,quoteinto起到的作用就是转义没有什么特别独特的地方

4.sql语句查询

(1)只带一个参数的查询并考虑注入的方式

$adapter=$u->getAdapter();
    	
    	//条件查询(防注入方式)
    	/*$condition=$adapter->quoteInto('id>?', 1)
    	.$adapter->quoteInto(' and age>?',16);
    	$result1=$u->fetchAll($condition)->toArray();*/
    	
    	//sql语句查询只有一个参数的情况(防注入方式)
    	$sql=$adapter->quoteInto('select * from m_user where id>?',1);
    	//使用适配器查询fetchAll后面不能加toArray();
    	$result2=$adapter->query($sql)->fetchAll();

要注意的是如果使用适配器调用query的查询结果已经是数组了,这种sql语句查询用的就多了而且使用特别灵活,不仅支持单表查询还支持多表查询,功能可强大了

(2)多个个参数的查询并考虑注入的方式

//sql语句查询多个参数的情况(防注入方式)--传入的参数顺序不能颠倒
    	$result3=$adapter->query('select * from m_user where id>? and age>?',array(1,16))->fetchAll();
    	
    	//sql语句查询多个参数的情况(防注入方式)--传入的参数顺序可以颠倒
    	$result4=$adapter->query('select * from m_user where id>:id and age>:age',array("age"=>16,"id"=>1))->fetchAll();

这种情况query方法的参数有点多


5.通过主键查询数据

这种情况算是比较简单的一种,但是前提是表必须有主键

//根据主键查询数据--可查询一条或多条
    	$result5=$u->find(array(5,6))->toArray();

find方法可以传入单个参数,多个的话写成数组

6.查询一条数据

//只取出一条记录
    	$condition2=$adapter->quoteInto('username>?',"liming");
    	$result6=$u->fetchRow($condition2)->toArray();

这种情况只会查询出一条数据,而且转换出来的数组是一个一维数组,基本上就这些了


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值