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();

 

时间: 2024-08-28 20:28:58

yii2数据库操作DAO的相关文章

YII2数据库操作出现类似Database Exception – yii\db\Exception SQLSTATE[HY000] [2002] No such file or director

YII2进行MYSQL数据库操作时出现Database Exception – yii\db\Exception  SQLSTATE[HY000] [2002] No such file or directory错误的解决方法 在进行数据库操作时出现如下类似错误,实际则是PHP配置文件php.ini中未指定mysql.sock(或mysqld.sock)文件路径导致的PDO无法链接数据库 Database Exception – yii\db\Exception SQLSTATE[HY000]

yii2 数据库操作汇总

//1.简单查询 $admin=Admin::model()->findAll($condition,$params); $admin=Admin::model()->findAll("username=:name",array(":name"=>$username)); $infoArr= NewsList::model()->findAll("status = '1' ORDER BY id DESC limit 10 &quo

yii2 数据库操作(转)

开始使用数据库首先需要配置数据库连接组件,通过添加 db 组件到应用配置实现("基础的" Web 应用是 config/web.php),DSN( Data Source Name )是数据源名称,用于指定数据库信息.如下所示: return [ // ... 'components' => [ // ... 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbna

基于OCILIB的oracle数据库操作总结及自动生成Model和Dao的工具

基于OCILIB的oracle数据库操作总结 1.       类图 2.       基类BaseOCIDao的设计与实现 BaseOCIDao.h头文件 #pragma once /* --------------------------------------------------------------------------------------------- * * INCLUDES * ----------------------------------------------

Qt 多线程与数据库操作需要注意的几点问题(QSqlDatabase对象只能在当前线程里使用)

彻底抛弃MFC, 全面应用Qt 已经不少时间了.除了自己看书按步就班做了十几个验证性的应用,还正式做了3个比较大的行业应用,总体感觉很好.Native C++ 下, Qt 基本是我用过的最简便的界面库了.遇到了一些问题,大都解决的很顺利,回头想想,还是有几个问题很有意思,尤其是数据库应用.这里把我的经历分享一下. 1.线程内注册与连接数据库的竞争问题 文档上对多线程下数据库应用的注意事项写的很简明,一个线程创建的 QSqlDatabase 对象和 查出来的 QSqlQuery 对象只能给本线程用

十三、EnterpriseFrameWork框架核心类库之数据库操作(多数据库事务处理)

本章介绍框架中封装的数据库操作的一些功能,在实现的过程中费了不少心思,针对不同数据库的操作(SQLServer.Oracle.DB2)这方面还是比较简单的,用工厂模式就能很好解决,反而是在多数据库同时操作方面走了不少弯路:现在从以下几个方面进行说明: 一.不同数据库操作 此处用到了工厂模式来实现不同数据库操作,看下图 AbstractDatabase是一个抽象类,定义了所有对数据库的操作抽象方法,包括执行一个SQL语句.执行存储过程.事务操作等 [Serializable] public abs

Qt 多线程与数据库操作需要注意的几点问题

源地址:http://blog.csdn.net/goldenhawking/article/details/10811409 彻底抛弃MFC, 全面应用Qt 已经不少时间了.除了自己看书按步就班做了十几个验证性的应用,还正式做了3个比较大的行业应用,总体感觉很好.Native C++ 下, Qt 基本是我用过的最简便的界面库了.遇到了一些问题,大都解决的很顺利,回头想想,还是有几个问题很有意思,尤其是数据库应用.这里把我的经历分享一下. 1.线程内注册与连接数据库的竞争问题 文档上对多线程下数

Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作

前段时间我们游戏server升级到开发环境Java8,这些天,我再次server的线程模型再次设计了一下,耗费Lambda表情. LambdaJava代码.特别是丑陋不堪的匿名内部类,这篇文章主要就是想和大家分享这一点. 线程模型 首先简介一下我们游戏server的线程模型.大致例如以下图所看到的: Netty线程池仅仅处理消息的收发,当Netty收到消息之后.会交给游戏逻辑线程处理.因为是单线程在处理游戏逻辑,所以每个消息必须非常快处理完.也就是说,不能有数据库等耗时操作.不然逻辑线程非常可能

Java+MyEclipse+Tomcat (四)Servlet提交表单和数据库操作

前面三篇文章讲述了如何配置MyEclipse和Tomcat开发JSP网站.如何配置Servlet简单实现表单提交.如何配置MySQL实现JSP数据库查询. 这篇文章主要讲述Servlet表单的提交.Java中实现数据库的查询操作和自己遇到的瓶颈及理解.Java Web基础性文章,希望对大家有所帮助~ Java+MyEclipse+Tomcat (一)配置过程及jsp网站开发入门 Java+MyEclipse+Tomcat (二)配置Servlet及简单实现表单提交 Java+MyEclipse+