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. oracle数据库之分组查询

    本章内容和大家分享的是数据当中的分组查询.分组查询复杂一点的是建立在多张表的查询的基础之上,(我们在上一节课的学习中已经给大家分享了多表查询的使用技巧,大家可以自行访问:多表查询1  多表查询2)而在 ...

  2. 【Head First Java 读书笔记】(三)primitive主数据类型和引用

    认识变量 变量有两种:primitive数数据类型和引用. 声明变量 Java注重变量.它不会让你将浮点数类型变量放进整数类型的变量中,除非你先跟编译器确认过数字可以损失掉精确度. 为了要让类型安全能 ...

  3. 【Java】对Map按key和value分别排序

    一.什么是Map? 在讲解Map排序之前,我们先来稍微了解下map. map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. ...

  4. memset函数使用

    函数原型 void *memset(void *s,int c,size_t n): 功能 将已开辟内存空间 s 的首 n 个字节的值设为值 c. 头文件  #include<memory.h& ...

  5. 服务器控件数据回发实现IPostBackDataHandler需注意的

    我写的服务器控件(未完,模型如此) using System; using System.Collections.Generic; using System.Collections.Specializ ...

  6. Android Camera相机功能实现 拍照并保存图片

    AndroidManifest.xml <uses-feature android:name="android.hardware.camera"/> <uses- ...

  7. 阿里 RPC 框架 DUBBO 初体验

    最近研究了一下阿里开源的分布式RPC框架dubbo,楼主写了一个 demo,体验了一下dubbo的功能. 快速开始 实际上,dubbo的官方文档已经提供了如何使用这个RPC框架example代码,基于 ...

  8. pdo + 事务处理 处理线性事务

    /* * 事物处理线性操作. * 以转账为例 */ header('Content-type:text/html;charset=utf-8'); $opt = array(PDO::ATTR_PER ...

  9. Bitnami WordPress无法修改MySQL root的默认密码的解决方法?

    今天准备修改Bitnami WordPress的MySQL root的默认密码,但是总是出现下面错误: ERROR 1045 (28000): Access denied for user 'root ...

  10. 20165219 2017-2018-2 《Java程序设计》第7周学习总结

    20165219 2017-2018-2 <Java程序设计>第7周学习总结 课本知识总结 第11章 JDBC与MySQL数据库 连接数据库 1下载JDBC-MySQL数据库驱动 2 加载 ...