Yii 操作数据库方法大全
发布时间:2014-12-25 15:16:46 来源:51推一把
【摘要】Yii 操作数据库方法大全
//yii 数据save后得到插入id
$idObj->save(); //得到id (高级)
$onlyOne = $idObj->attributes[id]; //取得新插入的行ID
一 查询数据集合
1.$admin = Admin::model()->findAll($condition,$params); //该方法是根据一个条件查询一个集合
如:
findAll(username=:name,array(:name=>$username));
2.$admin=Admin::model()->findAllByPk($postIDs,$condition,$params);//该方法是根据主键查询一个集合我们也可以使用多个主键,如:findAllByPk(array(1,2));
如:
findAllByPk($id,name like:name and age=:age,array(:name=>$name,age=>$age));
3.$admin=Admin::model()->findAllByAttributes($attributes,$condition,$params);//该方法是根据条件查询一个集合,可以是多个条件,把条件放在数组里面
如:
findAllByAttributes(array(username=>admin));
4.$admin=Admin::model()->findAllBySql($sql,$params);//该方法是根据SQL语句查询一个数组
如:
findAllBySql(select * from admin where username=:name,array(:name=>admin));
二 查询对象的方法
1.$admin=Admin::model()->findByPk($postID,$condition,$params);//根据主键查询出一个对象
如:
findByPk(1);
2.$row=Admin::model()->find($condition,$params);//根据一个条件查询出一组数据,可能是多个,但是他只返回第一行数据
如:
find(username=:name,array(:name=>admin));
3.$admin=Admin::model()->findByAttributes($attributes,$condition,$params);//该方法是根据一个条件查询一组数据,可以是多个条件,把条件放到数组里面,他查询的也是第一条数据
如:
findByAttributes(username=:username,array(:username=>admin));
4.$admin=Admin::model()->findBySql($sql,$params);//该方法是根据SQL查询一组数据,他查询的也是第一条数据
如:
findBySql(select * from admin where username=:name,array(:name=>admin));
5.拼一个获得SQL的方法,再根据find查询出一个对象
$criteria = new CDbCriteria;
$criteria->select = username; //only select the username column
$criteria->condition = username=:username;
$criteria->params = array(:username=admin);
$post = Post::model()->find($criteria); //$params is not needed
三 查询个数,判断查询是否有结果
1.$n = Post::model()->count($condition,$params); //该方法是根据一个条件查询一个集合有多少条记录,返回一个int型数字
如:
count(username=:name,array(:name=>$username));
2.$n = Post::model()->countBySql($sql,$params); //该方法是根据SQL语句查询一个集合有多少条记录返回一个int型数字
如:
countBySql(select * from admin where username=:name,array(:name=>admin));
3.$exists = Post::model()->exists($condition,$params); //该方法是根据一个条件查询,得到的数组有没有数据,如果有数据返回true,否则没有找到
四 添加的方法
1.$admin = new Admin;
$admin->username = $username;
$admin->password = $password;
if($admin->save()>0){
echo insert success;
}else{
echo insert fail;
}
五 修改的方法
1.Post::model()->updateAll($attributes,$condition,$params);
$count = Admin::model()->updateAll(array(username=>11111,password=>11111),password=:pass,array(:pass=>111111a1));
if($count>0){
echo update success;
}else{
echo update fail;
}
2.Post::model()->updateByPk($pk,$attributes,$condition,$params); //$pk为主键,可以是一个也可以是一个集合,$attributes代表是要修改的字段的集合,$condition代表条件,$params传入的值
如:
$count = Post::model()->updateByPk(1,array(username=>admin,password=>admin));
$count = Post::model()->updateByPk(array(1,2),array(username=>admin,password=>admin));
if($count>0){
echo update success;
}else{
echo update fail;
}
3.Post::model()->updateCounters($counters,$condition,$params);//arry(status=>1)代表数据库中的admin表根据条件username=admin,查询出所有结果status字段都自加1
$count = Admin::model()->updateCounters(array(status=>1),username=:name,array(:name=>admin));
if($count>0){
echo update success;
}else{
echo update fail;
}
六 删除的方法
1.Post::model()->deleteAll($condition,$params);
$count = Admin::model()->deleteAll(username=:name and password=:pass,array(:name=>admin,:pass=>admin));
$id=1,2,3
deleteAll(id in (.$id.)); //删除id为这些的数据
if($count>0){
echo delete success;
}else{
echo delete fail;
}
2.Post::model()->deleteByPk($pk,$condition,$params);
$count = Admin::model()->deleteByPk(1);
$count = Admin::model()->deleteByPk(array(1,2),username=:name,array(:name=>admin));
if($count>0){
echo update success;
}else{
echo update fail;
}
/**************yii 直接sql操作数据库*******************/
$sql = "update jj_race_user set vote_num=vote_num+1 where id=".$uid;
$re = Yii::app()->db->createCommand($sql)->execute();
//查询
Yii::app()->db->createCommand($sql)->queryAll();
$connection = Yii::app()->db; //连接 Yii::app()->db->createCommand($sql);
//查找
$sql = "SELECT * FROM `tbl_user` ORDER BY id DESC";
$result = $connection->createCommand($sql)->queryAll();
或
$result = Yii::app()->db->createCommand($sql)->queryAll();
print_r($result);
//添加
$sql = " INSERT INTO `tbl_user` (`username`, `password`, `email`) VALUES (test, test, test@test.com) ";
$command=$connection->createCommand($sql);
print_r($command->execute());
//添加 返回自增id
$command1 = $connection->createCommand("SELECT last_insert_id()");
$result = $command1->queryAll();
//常用函数
(1)如果你执行的SQL语句有返回结果集: 例如SELECT。通常用query开头的系列函数:
$dataReader=$command->query(); // 执行一个 SQL 查询
$rows=$command->queryAll(); // 查询并返回结果中的所有行
$row=$command->queryRow(); // 查询并返回结果中的第一行
$column=$command->queryColumn(); // 查询并返回结果中的第一列
$value=$command->queryScalar(); // 查询并返回结果中第一行的第一个字
(2)你执行的SQL语句返回的不是结果集,只是状态值,例如:INSERT ,UPDATE,DELETE.则用execute()
$this->command->execute();
//使用事务的一种常见情形:CDbTransaction
$transaction = $connection->beginTransaction();
try{
$connection->createCommand($sql1)->execute();
$connection->createCommand($sql2)->execute();
.........
$transaction->commit();
}
catch(Exception $e){ // 如果有一条查询失败,则会抛出异常
$transaction->rollBack();
}