yii2 读取db操作db命令
yii2 读取db操作db命令
$connection = Yii::app()->db; //连接
插入数组形式
Yii::app()->dbName->createCommand()->insert("tbl_user",
array(
"username"=>"phpernote",
"password"=>"123456"
)
);
本文用作工作记录,也许有人会问为什么不用 Yii 的 Model 去操作 DB,原因很简单,Yii 的 Model 写法上是方便了很多,但是会执行多余的 SQL,打开 Yii 的执行 log 就会发现。
打开跟踪log的方法,config/main.php中 log routes 中添加
[php] view plain copy- [
- "class" => "CWebLogRoute",
- ]
所以为了效率,为了 DB 服务器的性能考虑,还是使用 createCommand 的好。
insert
[php] view plain copy- $row = Yii::app()->getDb()->createCommand()->insert("goods", array(
- "good_name" => $goods_name,
- "good_type" => $goods_type,
- "price" => $price,
- "buy_nums" => 0,
- "commit_nums" => 0,
- "create_time" => time(),
- ));
select
单表查询
[php] view plain copy- $goodsTypes = Yii::app()->getDb()->createCommand()
- ->select("type_id, type_name")
- ->from("goods_type")
- ->where("status=:status", [
- ":status" => 1
- ])
- ->queryAll();
连表查询[php] view plain copy
- $goods = Yii::app()->getDb()->createCommand()->from("goods g")
- ->select("g.good_id, g.good_name, gt.type_name, g.price, g.buy_nums, g.commit_nums, g.create_time")
- ->join("goods_type gt", "g.good_type=gt.type_id")
- ->where("g.`status`=:status1 and gt.`status`=:status2", [
- ":status1" => 1,
- ":status2" => 2
- ])
- ->order("g.create_time desc")
- ->queryAll();
delete[php] view plain copy
- $row = Yii::app()->getDb()->createCommand()
- ->delete("goods", "good_id=:good_id", array(
- ":good_id" => $goods_id,
- ));
update[php] view plain copy
- $row = Yii::app()->getDb()->createCommand()->update("goods", [
- "good_name" => $goods_name,
- "good_type" => $goods_type,
- "price" => $price,
- ], "good_id=:good_id", [
- ":good_id" => 1
- ]);
说明下,where 方法的使用方法很多,具体看 Yii 的代码注释,写的很详细。
就记录这点吧~
//查找 $sql = “SELECT * FROM `tbl_user` ORDER BY id DESC”; $command = $connection->createCommand($sql); $result = $command->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(); }声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: TP5常量参考
- 下一篇: php 清空数组方法