Yii增删改查操作
增: 1 第一种
$post=new Post;$post->title='sample post';$post->content='content for the sample post';$post->createTime=time();/$post->createTime=new CDbexpression_r('NOW()');$post->save();$user_field_data= new user_field_data;$user_field_data->flag=0;$user_field_data->user_id=$profile->id;$user_field_data->field_id=$_POST['emailhiden'];$user_field_data->value1=$_POST['email'];$user_field_data->save(); 注当一个表存储4次的时候,需要创建4个handle new4次
2 第二种
存储后我们需要找到这条记录的流水id 这样做 $profile = new profile; $profile->id;
3 第三种
用于更加安全的方法,来绑定变量类型 这样可以在同一个表中存储两个记录
$sql="insert into user_field_data(user_id,field_id,flag,value1) values(:user_id,:field_id,:flag,:value1);";$command=user_field_data::model()->dbConnection->createCommand($sql);$command->bindParam(":user_id",$profile->id,PDO::PARAM_INT);$command->bindParam(":field_id",$_POST['firstnamehiden'],PDO::PARAM_INT);$command->bindParam(":flag",$tmpflag,PDO::PARAM_INT);$command->bindParam(":value1",$_POST['firstname'],PDO::PARAM_STR);$command->execute();$command->bindParam(":user_id",$profile->id,PDO::PARAM_INT);$command->bindParam(":field_id",$_POST['emailhiden'],PDO::PARAM_INT);$command->bindParam(":flag",$tmpflag,PDO::PARAM_INT);$command->bindParam(":value1",$_POST['email'],PDO::PARAM_STR);$rowchange = $command->execute();if( $rowchange != 0){ 修改成功 }// 用来判断//注:update delete都可以用这个方法$sql="delete from profile where id=:id";$command=profile::model()->dbConnection->createCommand($sql);$command->bindParam(":id",$userid,PDO::PARAM_INT);$this->rowflag=$command->execute();$sql="update profile set pass=:pass,role=:role where id=:id";$command=profile::model()->dbConnection->createCommand($sql);$command->bindParam(":pass",$password,PDO::PARAM_STR);$command->bindParam(":role",$role,PDO::PARAM_INT);$command->bindParam(":id",$userid,PDO::PARAM_INT);$this->rowflag=$command->execute();// 同理变更updateAll()模式$sql="update user_field_data set flag = :flag where user_id= :user_id and field_id= :field_id ";原始sql语句$criteria = new CDbCriteria;$criteria->condition = 'user_id = :user_id and field_id= :field_id';$criteria->params = array(':user_id' => $userid,':field_id' => $fieldid);$arrupdate = array('flag' => $flag);if(user_field_data::model()->updateAll($arrupdate,$criteria) != 0){更新成功后。。。}
4 第四种
更新和存储应用同一个handle 流程:先查询记录是否存在,若存在就更新,不存在就新创建 注:1. 第一次查询的变量,要跟save()前的变量一致。2. 存储时候需要再次 new一下库对象
$user_field_data = user_field_data::model()->findByAttributes($attributes = array('user_id' => Yii::app()->user->user_id, 'field_id' => $key));if ($user_field_data !== null){ $user_field_data->value1 = $value; $user_field_data->save();}else{ $user_field_data = new user_field_data; $user_field_data->user_id = Yii::app()->user->user_id; $user_field_data->field_id = $key; $user_field_data->value1 = $value; $user_field_data->save();}删:
$post=Post::model()->findByPk(10); // assuming there is a post whose ID is 10 $post->delete(); // delete the row from the database table // delete the rows matching the specified condition Post::model()->deleteAll($condition,$params); // delete the rows matching the specified condition and primary key(s) Post::model()->deleteByPk($pk,$condition,$params);
改:
例子: $post=Post::model()->findByPk(10); $post->title=’new post title’; $post->save(); // save the change to database
// update the rows matching the specified condition Post::model()->updateAll($attributes,$condition,$params); 例子:或者参考上面例子 $c=new CDbCriteria; $c->condition=’something=1′; $c->limit=10; $a=array(‘name’=>’NewName’); Post::model()->updateAll($a, $c);
// update the rows matching the specified condition and primary key(s) Post::model()->updateByPk($pk,$attributes,$condition,$params); 例子 $profile = profile::model()->updateByPk( Yii::app()->user->user_id, $attributes = array(‘pass’ => md5($_POST['password']), ‘role’ => 1));
// update counter columns in the rows satisfying the specified conditions Post::model()->updateCounters($counters,$condition,$params);
查: 注:当项目没查找到整个对象会为空需要这样判定
if($rows !== null) 当对象不为空{ return true;}else{ return false;} SELECT,读表时候用到 find() 第一种find()
// find the first row satisfying the specified condition$post=Post::model()->find($condition,$params);// 条件查询$post = Post::model()->find('post_id=:post_id AND status=:status',array( ':post_id'=>8, ':status'=>'active',)); 同样的语句,用另种方式表示
$criteria=new CDbCriteria;$criteria->select='title'; // only select the 'title' column$criteria->condition='postID=:postID';$criteria->params=array(':postID'=>10);$post=Post::model()->find($criteria); // $params is not needed 第二种find()
$post=Post::model()->find(array( 'select'=>'title', 'condition'=>'postID=:postID', 'params'=>array(':postID'=>10),));// find the row with the specified primary key$post=Post::model()->findByPk($postID,$condition,$params);findByAttributes() $post=Post::model()->findByAttributes($attributes,$condition,$params); 第一种findByAttributes()
$checkuser = user_field_data::model()->findByAttributes( array('user_id' => Yii::app()->user->user_id, 'field_id' => $fieldid)); 第二种findByAttributes()
$checkuser = user_field_data::model()->findByAttributes( $attributes = array('user_id' => Yii::app()->user->user_id, 'field_id' => $fieldid)); 第三种当没有conditions时候,不用params
$user_field_data = user_field_data::model()->findAllByAttributes( $attributes = array('user_id' => ':user_id'), $condition = "field_id in (:fields)", $params = array(':user_id' => Yii::app()->user->user_id, ':fields' => "$rule->dep_fields"));
// find the first row using the specified SQL statement $post=Post::model()->findBySql($sql,$params); 例子 user_field_data::model()->findBySql(“select id from user_field_data where user_id = :user_id and field_id = :field_id “, array(‘:user_id’ => $userid,’:field_id’=>$fieldid)); 此时回传的是一个对象
第四种 添加其他条件
$criteria = new CDbCriteria;$criteria->select ='newtime';//选择只显示哪几个字段要与库中名字相同,但是不能COUNT(newtime) as name这样写$criteria->join = 'LEFT JOIN Post ON Post.id=Date.id';//1.先要在relation函数中增加与Post表的关系语句 2.Date::model()->with('post')->findAll($criteria)$criteria->group = 'newtime';$criteria->limit = 2; // 都是从0开始,选取几个$criteria-> offset = 2;// 从哪个偏移量开始print_r(Date::model()->findAll($criteria));//得到行数目或者其他数目 count// get the number of rows satisfying the specified condition$n=Post::model()->count($condition,$params);// get the number of rows using the specified SQL statement$n=Post::model()->countBySql($sql,$params);// check if there is at least a row satisfying the specified condition$exists=Post::model()->exists($condition,$params);YYii增删改查操作的更多相关文章
- mongoVUE的增删改查操作使用说明
mongoVUE的增删改查操作使用说明 一. 查询 1. 精确查询 1)右键点击集合名,再左键点击Find 或者直接点击工具栏上的Find 2)查询界面,包括四个区域 {Find}区,查询条件格式{& ...
- (转)SQLite数据库增删改查操作
原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...
- 详谈easyui datagrid增删改查操作
转自:http://blog.csdn.net/abauch_d/article/details/7734395 前几天我把easyui dadtagrid的增删改查的实现代码贴了出来,发现访问量达到 ...
- PHP程序中使用PDO对象实现对数据库的增删改查操作的示例代码
PHP程序中使用PDO对象实现对数据库的增删改查操作(PHP+smarty) dbconn.php <?php //------------------------使用PDO方式连接数据库文件- ...
- 浅谈dataGridView使用,以及画面布局使用属性,对datagridview进行增删改查操作,以及委托使用技巧
通过几天的努力后,对datagridview使用作一些简要的介绍,该实例主要运用与通过对datagridview操作.对数据进行增删改查操作时,进行逻辑判断执行相关操作.简单的使用委托功能,实 ...
- 05_Elasticsearch 单模式下API的增删改查操作
05_Elasticsearch 单模式下API的增删改查操作 安装marvel 插件: zjtest7-redis:/usr/local/elasticsearch-2.3.4# bin/plugi ...
- JDBC连接数据库及增删改查操作
什么是JDBC?Java语言访问数据库的一种规范,是一套APIJDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类 ...
- Elasticsearch 单模式下API的增删改查操作
<pre name="code" class="html">Elasticsearch 单模式下API的增删改查操作 http://192.168. ...
- Android SQLite 数据库 增删改查操作
Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...
随机推荐
- js获取网站根目录
//js获取网站根路径(站点及虚拟目录),获得网站的根目录或虚拟目录的根地址 function getRootPath(){ var strFullPath=window ...
- 关于action script与js相互调用的Security Error问题
大家都知道,as和js相互调用可以通过ExternalInterface.call和ExternalInterface.addCallback来进行. 比较好的做法是使用之前通过ExternalInt ...
- zero1--hibernate注解02
- Spring中的工厂模式和单例模式
Spring预备知识(适合中小型项目) 作用:集成和管理其他框架 工厂模式: A a = new A( ); 将类所要创建的对象写入工厂,统一进行管理 package com.spring; pu ...
- OC 对象和匿名对象
OC 对象和匿名对象 对象和匿名对象的定义: 当new出一个对象时,如果用一个指针接收这个对象,那么这个指针通常被称为对象. 如果new出的对象,不用指针接收,那么这个对象就称为匿名对象. #impo ...
- SQLdiag-配置文件-PerfmonCollector
前一篇我们已经使用默认配置文件收集了部分诊断数据,并且知道配置文件会影响收集数据的内容.这一篇我们重点讲述配置文件中与性能计数器相关的操作.可使用XML模板控制SQLdiag使用的收集器.每个收集器可 ...
- 第三篇 Integration Services:增量加载-Adding Rows
本篇文章是Integration Services系列的第三篇,详细内容请参考原文. 增量加载是什么增量加载仅加载与先前加载差异的.差异包括:->新增的行->更新的行->删除的行通过 ...
- iOS UICollectionView之三(基本用法)
#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...
- Lintcode: Minimum Subarray
Given an array of integers, find the subarray with smallest sum. Return the sum of the subarray. Hav ...
- .net开发,html ajax开发架构之我见 bs ajax最简化法 Knock out Request,totally oo
.net开发中,无论ajax还是webform,webpage, 总免不了要和request这个静态全局,可以远程通信的对象打交道. 而对于软件来讲,按照Matin Fowler的的面向对象,可利用软 ...