yii2数据库操作DAO

↘锁芯ラ 提交于 2019-12-29 16:05:45

执行 SQL 语句

1 $db = \Yii::$app->db;
2 $rows = $db->createCommand('SELECT * FROM zs_dynasty')
3 ->queryAll();

 

1 $rowCount=$command->execute();   // 执行无查询 SQL
2 $dataReader=$command->query();   // 执行一个 SQL 查询
3 $rows=$command->queryAll();      // 查询并返回结果中的所有行
4 $row=$command->queryRow();       // 查询并返回结果中的第一行
5 $column=$command->queryColumn(); // 查询并返回结果中的第一列
6 $value=$command->queryScalar();  // 查询并返回结果中第一行的第一个字段

 


获取查询结果

 1 $db = \Yii::$app->db;
 2 $query = $db->createCommand('SELECT * FROM zs_dynasty')
 3     ->query();
 4 while(($row=$query->read())!==false) { 
 5     print_r($row);
 6 }
 7 // 使用 foreach 遍历数据中的每一行
 8 $query = $db->createCommand('SELECT * FROM zs_dynasty')
 9     ->query();
10 foreach($query as $row) {
11     print_r($row);
12 }
13 // 一次性提取所有行到一个数组
14 $query = $db->createCommand('SELECT * FROM zs_dynasty')
15     ->query();
16 $rows=$query->readAll();
17 print_r($rows);使用事务
 1 $db = \Yii::$app->db;
 2 $transaction=$db->beginTransaction();
 3 try
 4 {
 5     $query = $db->createCommand('SELECT * FROM zs_dynasty')
 6         ->query();
 7     $transaction->commit();
 8 }
 9 catch(Exception $e) // 如果有一条查询失败,则会抛出异常
10 {
11     $transaction->rollBack();
12 }
13 $rows=$query->readAll();
14 print_r($rows);

 

 1 绑定参数
 2 // 一条带有两个占位符 ":username" 和 ":email"的 SQL
 3 $sql="INSERT INTO tbl_user (username, email) VALUES(:username,:email)";
 4 $db = \Yii::$app->db;
 5 $command=$db->createCommand($sql);
 6 // 用实际的用户名替换占位符 ":username" 
 7 $command->bindParam(":username",$username,PDO::PARAM_STR);
 8 // 用实际的 Email 替换占位符 ":email" 
 9 $command->bindParam(":email",$email,PDO::PARAM_STR);
10 $command->execute();
11 // 使用新的参数集插入另一行
12 $command->bindParam(":username",$username2,PDO::PARAM_STR);
13 $command->bindParam(":email",$email2,PDO::PARAM_STR);
14 $command->execute();

 

 1 绑定列
 2 $sql="SELECT username, email FROM tbl_user";
 3 $dataReader=$db->createCommand($sql)->query();
 4 // 使用 $username 变量绑定第一列 (username) 
 5 $dataReader->bindColumn(1,$username);
 6 // 使用 $email 变量绑定第二列 (email) 
 7 $dataReader->bindColumn(2,$email);
 8 while($dataReader->read()!==false)
 9 {
10     // $username 和 $email 含有当前行中的 username 和 email 
11 }

 

1 使用表前缀
2 配置:Connection::tablePrefix 
3 在 SQL 语句中使用 {{%TableName}}
4 $sql='SELECT * FROM {{user}}';
5 $users=$connection->createCommand($sql)->queryAll();

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!