多语言展示
当前在线:1982今日阅读:26今日分享:39

Yii系列总结:[1]Yii DAO数据库操作

dao操作方便,但不安全,适合学习,不适合使用
数据库代码

数据库代码:/*Navicat MySQL Data TransferSource Server         : lonxomSource Server Version : 50524Source Host           : localhost:3306Source Database       : testTarget Server Type    : MYSQLTarget Server Version : 50524File Encoding         : 65001Date: 2013-10-12 00:03:03*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `city`-- ----------------------------DROP TABLE IF EXISTS `city`;CREATE TABLE `city` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `name` varchar(32) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '城市名',  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='城市表';-- ------------------------------ Records of city-- ----------------------------INSERT INTO `city` VALUES ('1', '北京');INSERT INTO `city` VALUES ('2', '上海');INSERT INTO `city` VALUES ('3', '广州');INSERT INTO `city` VALUES ('4', '武汉');INSERT INTO `city` VALUES ('5', '天津');-- ------------------------------ Table structure for `user`-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `username` varchar(32) CHARACTER SET utf8 NOT NULL COMMENT '用户名',  `city_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '城市',  `create_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',  `update_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间',  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='用户表';-- ------------------------------ Records of user-- ----------------------------INSERT INTO `user` VALUES ('2', '菩提', '2', '0', '0');INSERT INTO `user` VALUES ('3', '天师', '5', '0', '0');INSERT INTO `user` VALUES ('5', '久1', '3', '0', '0');INSERT INTO `user` VALUES ('6', '久2', '4', '0', '0');INSERT INTO `user` VALUES ('7', '久3', '1', '0', '0');INSERT INTO `user` VALUES ('8', '久4', '4', '0', '0');INSERT INTO `user` VALUES ('9', '久5', '5', '0', '0');INSERT INTO `user` VALUES ('10', '久6', '1', '0', '0');INSERT INTO `user` VALUES ('11', '久7', '3', '0', '0');INSERT INTO `user` VALUES ('12', '久8', '3', '0', '0');INSERT INTO `user` VALUES ('13', '久9', '1', '0', '0');INSERT INTO `user` VALUES ('14', '帅帅', '1', '1381395175', '1381395175');INSERT INTO `user` VALUES ('15', '小猪猪', '1', '1381396237', '1381463258');INSERT INTO `user` VALUES ('16', '阿浩', '2', '1381396559', '1381396559');INSERT INTO `user` VALUES ('17', '鹏鹏', '1', '1381398344', '1381398344');INSERT INTO `user` VALUES ('18', '方方', '5', '1381398969', '1381398969');INSERT INTO `user` VALUES ('19', '官人', '1', '1381456860', '1381456860');INSERT INTO `user` VALUES ('20', '谢平', '4', '1381461563', '1381461563');INSERT INTO `user` VALUES ('21', '元方', '2', '1381463288', '1381463288');INSERT INTO `user` VALUES ('22', '康师傅', '1', '1381500128', '1381500128');-- ------------------------------ Table structure for `user_info`-- ----------------------------DROP TABLE IF EXISTS `user_info`;CREATE TABLE `user_info` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '用户表id',  `info` text CHARACTER SET utf8 COMMENT '用户简介',  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='用户信息表';-- ------------------------------ Records of user_info-- ----------------------------INSERT INTO `user_info` VALUES ('1', '15', '我是一个好人');

基本查询方法
1

//DAO方式的  插入动作    public function actionCreate()    {        $res=Yii::app()->db->createCommand()->insert('user',array(            'username'=>'水墨淡清',                   ));        dump($res,FALSE);        dump(Yii::app()->db->getLastInsertID());//获取最新插入的ID    }

2

//DAO方式的  修改动作    public function actionUpdate()    {        $res=Yii::app()->db->createCommand()->update('user',array(            'username'=>'我是来玩的'        ), 'id=:id',array(':id'=>24));        dump($res);    }

3

//DAO方式的  删除动作        public function actionDelete($id)    {        $id=trim($id);        $res=Yii::app()->db->createCommand()->delete('user','id=:id',array(':id'=>$id));        dump($res);    }

4

//单条数据查询 queryRow()        public function actionRow()    {        $row=Yii::app()->db->createCommand()->select('id,username,city_id')->from('user')->where('id=:id',array(':id'=>2))->queryRow();        dump($row);    }

5

//多条数据查询 queryAll()    public function actionAll()    {        $all=Yii::app()->db->createCommand()->select('id,username,city_id')->from('user')->where('id>:id',array(':id'=>1))->queryAll();        dump($all);    }

6

//统计数据数量 queryScalar()    public function actionScalar()    {        $scalar=Yii::app()->db->createCommand()->select('count(1)')->from('user')->where('id>:id',array(':id'=>1))->queryScalar();        dump($scalar);    }

7

//查询所有的ID    public function actionColumn()    {        $ids=Yii::app()->db->createCommand()->select('id')->from('user')->where('id>:id',array(':id'=>1))->queryColumn();        dump($ids);    }

基本查询条件方法
1

//查询出ID大于1 并且小于5的所有数据集合         //and()方法        //$all=Yii::app()->db->createCommand()->select('id,username,city_id')->from('user')->where('id>:id and id<5',array(':id'=>1))->queryAll();                //and()数组方法        //$all=Yii::app()->db->createCommand()->select('id,username,city_id')->from('user')->where(array('and','id>1','id<5'))->queryAll();                //andWhere()方法        //$all=Yii::app()->db->createCommand()->select('id,username,city_id')->from('user')->where('id>:id',array(':id'=>1))->andWhere('id<:eid',array(':eid'=>5))->queryAll();

2

//使用in查询出id在5和6里面的数据集合        //$all=Yii::app()->db->createCommand()->select('id,username,city_id')->from('user')->where(array('in','id',array(5,6)))->queryAll();

3

//使用like查询 并且 ID大于6小于10        //$all=Yii::app()->db->createCommand()->select('id,username,city_id')->from('user')->where(array('like','username','%久%'))->andWhere(array('and','id>6','id<10'))->queryAll();

4

//查询出名字里面带有9的 3条数据 ID倒序 略过3条数据//$all=Yii::app()->db->createCommand()->select('id,username,city_id')->from('user')->where(array('like','username','%久%'))->limit(3)->offset(3)->order('id desc')->queryAll();dump($all);

5

//关联查询      public function actionJoin()    {        //取出id 大于 2 小于 6的所有用户信息并取出城市名称        $users=Yii::app()->db->createCommand()->select('u.id,u.username,c.name')                                              ->from('user u')                                              ->join('city c','c.id=u.city_id')                                              ->where('u.id>2')                                              ->andWhere('u.id<6')                                              ->queryAll();        dump($users);                   }

推荐信息