1、根据条件查询一个集合

$objectResult=Post::model()->findAll($condition,$params);
$objectResult=Post::model()->findAll("username=:name",array(":name"=>$username));
$objectResult=RepairItem::model()->findAll("orderno=:orderno and orderpostid=:orderpostid",array(":orderno"=>$orderInfo['orderno'],':orderpostid'=>$orderInfo['orderpostid']));

$infoArr = NewsList::model()->findAll("status = '1' ORDER BY postid DESC limit 10 ");

2、根据主键查询一个集合,可以使用多个主键 findAllByPk

$objectResult=Post::model()->findAllByPk($postIDs,$condition,$params);
$objectResult=Post::model()->findAllByPk($postid,"name like :name and age=:age",array(':name'=>$name,'age'=>$age));
$objectResult=Post::model()->findAllByPk(array(1,2));

3、根据条件查询一个集合,可以是多个条件,把条件放到数组里面 findAllByAttributes

$objectResult=Post::model()->findAllByAttributes($attributes,$condition,$params);
$objectResult=Post::model()->findAllByAttributes(array('username'=>'jack'));

4、根据SQL语句查询一个数组 findAllBySql

$arrResult=Post::model()->findAllBySql($sql,$params);
$arrResult=Post::model()->findAllBySql("select * from tbl_post where username like :name",array(':name'=>'?%'));

5、根据主键查询出一个对象 eg:findByPk(1);

$arrResult=Post::model()->findByPk($postID,$condition,$params);
$arrResult=Post::model()->findByPk(1);

6、根据条件查询出一组数据,【可能是多个,但是他只返回第一行数据】

$arrRow=Post::model()->find($condition,$params);
$arrRow=Post::model()->find('username=:name',array(':name'=>'jack'));

7、根据条件查询一组数据,【可以是多个条件,把条件放到数组里面,查询的也是第一条数据】

$objectResult=Post::model()->findByAttributes($attributes,$condition,$params);
$objectResult=Post::model()->findByAttributes(array('username'=>'objectResult'));

8、根据SQL语句查询一组数据,【查询的也是第一条数据】

$objectResult=Post::model()->findBySql($sql,$params);
$objectResult=Post::model()->findBySql("select * from objectResult where username=:name",array(':name'=>'objectResult'));

9、通过CDbCriteria类find查询出一个对象

$criteria=new CDbCriteria; 
$criteria->select='username'; // 限制显示哪些字段 
$criteria->condition='username=:username';     //一个查询条件用aCondition.多条件用addCondition
$criteria->params=array(":username=>'jack'");
$criteria->order = "postsort DESC";
$criteria->limit = "3";
$post=Post::model()->find($criteria);

10、多条件查询的语句

$criteria = new CDbCriteria;     
$criteria->addCondition("postid=1"); //等同于 where postid = 1 
$criteria->addInCondition('postid', array(1,2,3,4,5)); //等同于 where postid IN (1,2,3,4,5,); 
$criteria->addNotInCondition('postid', array(1,2,3,4,5));//等同于 NOT IN (1,2,3,4,5,)
$criteria->addCondition('postid=1','OR');//等同于 OR而非AND 
$criteria->addSearchCondition('username', 'jack');//等同于 where name like '%jack%' 
$criteria->addBetweenCondition('postid', 1, 4);// 等同于 between 1 and 4
$criteria->compare('postid', 1);    //根据你的参数自动处理成addCondition或者addInCondition.
$criteria->compare('postid', array(1,2,3));   //数组就会调用addInCondition 
 
 
$criteria->select = 'postid,parentid,name'; //限制显示哪些字段 
$criteria->join = 'xxx'; //连接表 
$criteria->with = 'xxx'; //调用relations  
$criteria->limit = 10;    //取1条数据,如果小于0,则不作处理 
$criteria->offset = 1;   //两条合并起来,则表示 limit 10 offset 1,或者代表了。limit 1,10 
$criteria->order = 'xxx DESC,XXX ASC' ;//排序条件 
$criteria->group = 'group 条件'; 
$criteria->having = 'having 条件 '; 
$criteria->distinct = FALSE; //是否唯一查询

三、查询个数,判断查询是否有结果

根据一个条件查询一个集合有多少条记录,返回一个int型数字
$intCount=Post::model()->count($condition,$params);
$intCount=Post::model()->count("username=:name",array(":name"=>$username));
 
根据SQL语句查询一个集合有多少条记录,返回一个int型数字
$intCount=Post::model()->countBySql($sql,$params);
$intCount=Post::model()->countBySql("select * from objectResult where username=:name",array(':name'=>'objectResult'));
 
根据一个条件查询查询得到的数组有没有数据,有数据返回一个true,否则没有找到
$boolExists=Post::model()->exists($condition,$params);
$boolExist=Post::model()->exists("name=:name",array(":name"=>$username));

四、添加的方法

$objectPost = new Post;       
$objectPost->username = $username;
$objectPost->password = $password;
或许
$objectPost->attributes = $arrNewData;

if($objectPost->save()){
    $intPostId= $objectPost->primaryKey; //生成主键id
    echo "添加成功";
}else{
    echo "添加失败";
}

五、修改的方法

Post::model()->updateAll($attributes,$condition,$params);
$count =Post::model()->updateAll(array('username'=>'11111','password'=>'11111'),'password=:pass',array(':pass'=>'1111a1'));
if($count > 0){
    echo "修改成功";
}else{
    echo "修改失败";
}
 
$rt = PostList::model()->updateAll(array('status'=>'1'),'staff_postid=:staff AND host_postid=:host',array(':staff'=>$staff_postid,':host'=>$host_postid));

Post::model()->updateByPk($pk,$attributes,$condition,$params);
$count=Post::model()->updateByPk(1,array('username'=>'jack','password'=>'jack'));

$count=Post::model()->updateByPk(array(1,2),array('username'=>'jack1','password'=>'jack1'),'username=:name',array(':name'=>'jack'));

if($count > 0){
    echo "修改成功";
}else{
    echo "修改失败";
}
 
Post::model()->updateCounters($counters,$condition,$params);

$count=Post::model()->updateCounters(array('status'=>1),'username=:name',array(':name'=>'jack'));

if($count > 0){
    echo "修改成功";
}else{
    echo "修改失败";
}
//array('status'=>1)代表数据库中的post表根据条件username='jack',查询出的所有结果status字段都自加1

六、删除的方法

//deleteAll
Post::model()->deleteAll($condition,$params);
$count = Post::model()->deleteAll('username=:name and password=:pass',array(':name'=>'jack',':pass'=>'jack'));
$count = Post::model()->deleteAll('postid in("1,2,3")');//删除postid为这些的数据
if($count>0){
    echo "删除成功";
}else{
    echo "删除失败";
}
 
//deleteByPk
Post::model()->deleteByPk($pk,$condition,$params);
$count = Post::model()->deleteByPk(1);
$count =Post::model()->deleteByPk(array(1,2),'username=:name',array(':name'=>'jack'));
if($count>0){
    echo "删除成功";
}else{
    echo "删除失败";
}}

七、执行原生的SQL语句

$sql = "select t.*, t1.userphone, t1.truename, t1.usermail from {{member_contact}} t left join {{member}} t1 on t.userid = t1.userid where t.contactid in (1,2,3)";
$arrRows=Yii::app()->db->createCommand($sql)->query();
foreach ($arrRows as $k => $v){
  
}

八、事务处理 【多表更新插入操作请使用事务处理】

$transaction = Yii::app()->db->beginTransaction();
try{
                $arrOrderProfile = array(
                    'orderid'     => $orderId,
                    'userip'      => $userip,
                    'contactid' => $contactId,
                    'updatetime'=> $now
                );
                $modelOrderProfile = new RepairOrderProfile();
                $modelOrderProfile->attributes = $arrOrderProfile;
                if(!$modelOrderProfile->save()){
                    throw new CException('维修订单生成失败,通知事务回滚');
                }
                $recordCounter = Counter::model()->updateByPk(1,array('max_id'=>$orderId));
                if($recordCounter <= 0 )
                    throw new CException('订单计数器更新失败,通知事务回滚');
                $transaction->commit(); //提交事务会真正的执行数据库操作
}catch(Exception $e){
    file_put_contents('action.log', $e->getCode().':'.$e->getMessage().'--'.date('Y-m-d H:i:s',time()),FILE_APPEND);
    $transaction->rollback();
   
}

Yii1 的数据库操作整理的更多相关文章

  1. SQL数据库操作整理

    1.规范 ①关键字与函数名称全部大写: ②数据库名称.表名称.字段名称全部小写: ③SQL语句必须以分号结尾. 2.数据库操作 // 1. 创建数据库,其中[]表示可以省略 CREATE { DATA ...

  2. SQL不同服务器数据库之间的数据操作整理(完整版)

    ---------------------------------------------------------------------------------- -- Author : htl25 ...

  3. 转载-SQL不同服务器数据库之间的数据操作整理(完整版) .

    ---------------------------------------------------------------------------------- -- Author : htl25 ...

  4. Mysql数据库常用操作整理

    0.说明 MySQL数据库是一个十分轻便的数据库管理系统,相比大型的数据库管理系统如Oracle,MySQL更拥有轻便.灵活.开发速度快的特色,更适用于中小型数据的存储与架构,被数以万计的网站采用.从 ...

  5. 常用的Mysql数据库操作语句大全

    一.用户管理: 1.新建用户: >CREATE USER name IDENTIFIED BY 'ssapdrow'; 2.更改密码: >SET PASSWORD FOR name=PAS ...

  6. 数据库知识整理<一>

    关系型数据库知识整理: 一,关系型数据库管理系统简介: 1.1使用数据库的原因: 降低存储数据的冗余度 提高数据的一致性 可以建立数据库所遵循的标准 储存数据可以共享 便于维护数据的完整性 能够实现数 ...

  7. 3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的差别,sql文件导入

     1相关术语 语句 含义 操作 DML语句 (Data Manipulation Language) 数据库操作语言 insert update delete select DDL语言 (Date ...

  8. 常用Mysql数据库操作语句

    用户管理: 1.新建用户: 语法msyql>CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明: username - 你将创建 ...

  9. C# SQLite 数据库操作

    C# SQLite 数据库操作学习 运行环境:Window7 64bit,.NetFramework4.61,C# 7.0 参考: SQLite 官网 SQL As Understood By SQL ...

随机推荐

  1. web大文件上传控件-监控f_create流程-Xproer.HttpUploader6

    监控f_create流程 1.打开ie,f12 2.启动网络监控 点击开始捕获 上传文件,然后查看监控 将监控信息转到详细视图 向f_create提交的数据 f_create返回值

  2. Java IO RandomAccessFile 任意位置读/写

    随机读写类 RandomAccessFile的唯一父类是Object,与其他流父类不同.是用来访问那些保存数据记录的文件的,这样你就可以用seek( )方法来访问记录,并进行读写了.这些记录的大小不必 ...

  3. Java 可变字符串StringBuilder/StringBuffer的区别

    public class StringBuilder_and_StringBuffer { private static long SystemTime(){ return System.curren ...

  4. (转)不定义JQuery插件,不要说会JQuery

    原文地址:http://www.cnblogs.com/xcj26/p/3345556.html 一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写$("#" ...

  5. 编写高质量代码改善C#程序的157个建议——建议60:重新引发异常时使用Inner Exception

    建议60:重新引发异常时使用Inner Exception 当捕获了某个异常,将其包装或重新引发异常的时候,如果其中包含了Inner Exception,则有助于程序员分析内部信息,方便代码调试. 以 ...

  6. 再解炸弹人——BFS

    原创 之前用了枚举法解炸弹人,题目详情请看我之前的博客:https://www.cnblogs.com/chiweiming/p/9295262.html 利用枚举法是无视地图布局的,枚举法直接全局搜 ...

  7. 使用Jenkins远程部署war包到tomcat container

    Jenkins首先使用maven将源代码进行编译打包,之后需要将war包传送到tomcat服务器上进行部署. 来看一下Jenkins的基本配置,首先需要安装插件"Deploy to cont ...

  8. angular 响应式表单

  9. 「BJOI2012」连连看

    题目链接 戳我 \(Solution\) 我们首先进行拆点操作,将每个点都拆成\(x\)和\(y\),将满足条件的两个点连起来就好了(记得要将\(x\)连\(y'\)的同时要将\(y\)联向\(x'\ ...

  10. servlet-mysql实现简单用户登录注册

    环境:IDEA Maven 效果截图: 项目结构: 类说明: ConnectionUtil:负责数据库连接和释放 UserDao:数据库增删改查操作 User:用户Bean,只用注册和登录的话可以不要 ...