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 ...
随机推荐
- block iOS 块
block 是个很陌生的东西啊.以前没有学会,现在再看它,还是觉得很稀奇古怪. 无奈,之后硬着头皮学了.. //有参返回值 格式: 返回值类型 (^变量名)(参数类型及个数) = ^(形参列表){ 代 ...
- groovy
1.加载和卸载(每次都新建一个GroovyClassLoader 实例,然后使用新建的classloader去加载) try { GroovyClassLoader groovyClassLoader ...
- iOS:城市级联列表的使用
1.介绍: 现在越来越多的项目都用到了地址,尤其是电商O2O的购物平台,我之前做的教育产品和电商产品都用到了,而实现地址的设置用到的技术就是城市级联列表,即普遍的做法就是自定义选择器控件UIPicke ...
- iOS:app直播---原理篇
[如何快速的开发一个完整的iOS直播app](原理篇) 转载自简书@袁峥Seemygo:http://www.jianshu.com/p/7b2f1df74420 一.个人见解(直播难与易) 直播 ...
- 微信公众平台开发(112) 自动更新微信access token
关键字:Memcache access_token 更新 存储 7200 本文介绍如何存储及更新 access token的方法. 一.Access Token access_token是公众号的全局 ...
- 中国电信某站点JBOSS任意文件上传漏洞
1.目标站点 http://125.69.112.239/login.jsp 2.简单测试 发现是jboss,HEAD请求头绕过失败,猜测弱口令失败,发现没有删除 http://125.69.112. ...
- gcc选项-g与-rdynamic的异同_转
转自:http://www.tuicool.com/articles/EvIzUn gcc 的 -g ,应该没有人不知道它是一个调试选项,因此在一般需要进行程序调试的场景下,我们都会加上该选项,并且根 ...
- Android中颜色的设置
方案一:新建xml文件,然后在java中用代码访问(xml文件可以直接访问) 1.在res->values文件夹下新建color.xml(这个文件中定义的代码是#RRGGBB) 2.在java类 ...
- windows远程控制ubuntu尝试--未成功
按照百度知道上的步骤一步一步操作,下载xrdp,一切很顺利. 直至出现了,如下的語言: connecting to sesman ip 尝试找到原因第一个原因 第二次的分析解释 至今还没找出原因
- Java基础(8):方法重载的4个依据与例子
判断方法重载的依据: 1. 必须是在同一个类中 2. 方法名相同 3. 方法参数的个数.顺序或类型不同 4. 与方法的修饰符或返回值没有关系 运行结果: