yii2数据库操作DAO
Posted 云儿且行且珍惜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yii2数据库操作DAO相关的知识,希望对你有一定的参考价值。
执行 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();
以上是关于yii2数据库操作DAO的主要内容,如果未能解决你的问题,请参考以下文章
如何将 DAO 查询转换为 Yii2 ActiveRecord。如何从连接表中选择和使用特定列