继续《Yii Framework2.0开发教程(3)数据库mysql入门》

首先给予一定的尊重yii2数据库支持引进

Yii 基于 PHP's PDO一个成熟的数据库访问层的建立。它提供了一个统一的 API 并且克服了许多不同的 DBMS 违禁使用。 Yii 默认支持下面 DBMS :
MySQL
MariaDB
SQLite
PostgreSQL
CUBRID: version 9.1.0 or higher.
Oracle
MSSQL: version 2012 或更高版本号,如需使用 LIMIT/OFFSET。

配置

開始使用数据库首先须要配置数据库连接组件,通过加入 db 组件到应用配置实现("基础的" Web 应用是 config/web.php),例如以下所看到的:

return [// ...'components' => [// ...'db' => ['class' => 'yii\db\Connection','dsn' => 'mysql:host=localhost;dbname=mydatabase', // MySQL, MariaDB//'dsn' => 'sqlite:/path/to/database/file', // SQLite//'dsn' => 'pgsql:host=localhost;port=5432;dbname=mydatabase', // PostgreSQL//'dsn' => 'cubrid:dbname=demodb;host=localhost;port=33000', // CUBRID//'dsn' => 'sqlsrv:Server=localhost;Database=mydatabase', // MS SQL Server, sqlsrv driver//'dsn' => 'dblib:host=localhost;dbname=mydatabase', // MS SQL Server, dblib driver//'dsn' => 'mssql:host=localhost;dbname=mydatabase', // MS SQL Server, mssql driver//'dsn' => 'oci:dbname=//localhost:1521/mydatabase', // Oracle'username' => 'root', //数据库用户名'password' => '', //数据库密码'charset' => 'utf8',],],// ...
];

另外请參考PHP manual获取很多其它有关 DSN 格式信息。

在我们的样例中给出的配置文件是

<?php
//配置的数据库连接能够在应用中通过 Yii::$app->db 訪问return ['class' => 'yii\db\Connection','dsn' => 'mysql:host=localhost;dbname=zhyoulun','username' => 'root','password' => '20092565','charset' => 'utf8',
];

接下来我们就能够在《Yii Framework2.0开发教程(1)配置环境及第一个应用HelloWorld》建立的views/zhyoulun/helloworld.php中写我们接下来的測试代码。

第一步、数据库连接初始化的两种方式

(1)

$connection = Yii::$app->db;
$connection->open();

(2)

$connection = new \yii\db\Connection(
['dsn' => 'mysql:host=localhost;dbname=zhyoulun','username' => 'root','password' => '20092565','charset' => 'utf8']
);
$connection->open();

第二步:查询并显示数据

$command = $connection->createCommand('SELECT * FROM country');
$countries = $command->queryAll();
echo '<pre>';
print_r($countries);
echo '</pre>';

整个helloworld.php代码例如以下

<?php
//$connection = Yii::$app->db;
//$connection->open();$connection = new \yii\db\Connection(
['dsn' => 'mysql:host=localhost;dbname=zhyoulun','username' => 'root','password' => '20092565','charset' => 'utf8']
);
$connection->open();$command = $connection->createCommand('SELECT * FROM country');
$countries = $command->queryAll();
echo '<pre>';
print_r($countries);
echo '</pre>';?>

第三步、我们继续接着写,实验其它经常使用的函数。

(1)queryOne。返回单行

$command = $connection->createCommand("SELECT * FROM country WHERE code='BR'");
$country = $command->queryOne();
echo '<pre>';
print_r($country);
echo '</pre>';

(2)queryColumn,查询多列值

$command = $connection->createCommand("SELECT code FROM country");
$country = $command->queryColumn();
echo '<pre>';
print_r($country);
echo '</pre>';

(3)queryScalar,查询标量值/计算值

$command = $connection->createCommand("SELECT count(*) FROM country");
$country = $command->queryScalar();
echo '<pre>';
print_r($country);
echo '</pre>';

(4)假设运行 SQL 不返回不论什么数据可使用命令中的 execute 方法(UPDATE, INSERT, DELETE 更新、插入和删除等)

更新

$command = $connection->createCommand("UPDATE country SET name='Brazil-haha' WHERE code='BR'");
$command->execute();

更新

$connection->createCommand()->update('user', ['status' => 1], 'age > 30')->execute();

插入

$connection->createCommand()->insert('user', ['name' => 'Sam','age' => 30,
])->execute();

一次插入多行

$connection->createCommand()->batchInsert('user', ['name', 'age'], [['Tom', 30],['Jane', 20],['Linda', 25],
])->execute();

删除

$connection->createCommand()->delete('user', 'status = 0')->execute();

%======================================切割线======================================%

$command = $query->createCommand();
$rows = $command->queryAll();

类似中写法的一种替代方式是(select方法)

$query = new \yii\db\Query;
//组织查询语句
$query->select('code')->from('country')->limit(5);
//编译并运行查询语句
$row = $query->all();
echo '<pre>';
print_r($row);
echo '</pre>';

其它函数如where、groupby、orderby、having等參见http://www.yiichina.com/guide/2/db-query-builder

參考:

https://github.com/yiisoft/yii2/blob/master/docs/guide-zh-CN/db-dao.md

http://www.yiichina.com/api/2.0/yii-db-query

http://www.yiichina.com/guide/2/db-query-builder

转载请注明出处:http://blog.csdn.net/zhyoulun/article/details/40476019

版权声明:本文博主原创文章。博客,未经同意不得转载。

Yii Framework2.0开发教程(5)数据库mysql性能相关推荐

  1. 3.9 haas506 2.0开发教程-example-oled

    haas506 2.0开发教程-example-oled 1.OLED模块 2.测试 3.效果 4.总结 1.OLED模块 有机发光二极管(OrganicLight-Emitting Diode,OL ...

  2. haas506 2.0开发教程-hota(仅支持2.2以上版本)

    haas506 2.0开发教程-hota 1.hota.py升级 案例说明 (1)获取URL (2)功能代码 (3)输出log 2.hota.pac升级 案例说明 (1)获取URL (2)功能代码 ( ...

  3. 2.23 haas506 2.0开发教程 - KeyPad - 矩阵键盘(仅支持M320开发板)

    haas506 2.0开发教程 - KeyPad - 矩阵键盘 矩阵键盘 320矩阵键盘连线 案例说明 测试代码 功能测试 class - KeyPad keypad.init() - 初始化keyp ...

  4. 2.18 haas506 2.0开发教程 - 阿里云M2M设备间通信 - 规则引擎/Topic消息路由(仅支持2.2以上版本)

    haas506 2.0开发教程 - 阿里云M2M设备间通信 - 规则引擎/Topic消息路由 阿里云M2M设备间通信 通信流程 功能实现 1.创建产品 2.设备端开发 联云测试 3.建立topic之间 ...

  5. 3.2 haas506 2.0开发教程-example-wifi定位

    haas506 2.0开发教程-example-wifi定位 wifi定位 1.案例说明 2.程序代码 3.日志输出 总结 wifi定位 1.案例说明 扫描周围所得到的wifi热点,使用mac地址进行 ...

  6. 3.1 haas506 2.0开发教程-example-lbs (支持2.03以上版本)

    haas506 2.0开发教程-example-lbs 1.LBS (围绕地理位置数据而展开的服务) 2.实现步骤 (1)注册账号 (2)创建新应用 (3)添加key (4)程序烧写 (5)日志输出 ...

  7. MeeGo 开发指南 1.0 开发教程

    MeeGo 开发指南 1.0 开发教程 转自: MeeGo中文 介绍 如果想获取MeeGo平台的开发概览,最好地方的是MeeGo developers.这里讨论的是一些更细节化的问题,比如MeeGo ...

  8. 1.1 haas506 2.0开发教程-导学篇

    haas506 2.0开发教程-导学篇 一. 下载并安装驱动 1.1 CH340 driver 1.2 8910 driver 二. 搭建开发环境 2.0 集合开发工具HaaS506PYcom 2.1 ...

  9. haas506 2.0开发教程 - 阿里云ota - pac 固件升级(仅支持2.2以上版本)

    haas506 2.0开发教程-ota - pac 固件升级 ota - pac固件升级 案例说明 1.确定开发板内存 2.物联网平台开发 3.设备端开发 调试,确定开发板驻网成功 4.ota - 硬 ...

最新文章

  1. python怎么变白-python – 在热图中使反向对角线变白
  2. sqlite java需要按照,SQLite:java/jdbsqlite和python/sqlite3的区别
  3. 【C语言简单说】十五:while循环
  4. 探索未知种族之osg类生物---呼吸分解之更新循环一
  5. s3c2440第一个裸奔程序——跑马灯(转)
  6. AsyncTask类浅析
  7. Python学习笔记:集合(set)
  8. printf格式化字符串_Java printf()–将格式化的字符串打印到控制台
  9. 赋能行业 共建生态 阿里巴巴首次亮相义乌标准展
  10. 阿里云Serverless,全球第一!
  11. nc加载不了java,用友NC系统使用过程中常见问题和解决方法
  12. 怎么用服务器跑matlab程序,服务器上跑matlab程序
  13. linux如何删除镜像文件,linux 删除文件,小编教你linux如何删除文件
  14. npm 安装yarn
  15. PC端用Itunes备份Iphone时修改备份路径的办法
  16. MATLAB学习笔记:行列式及其应用
  17. python绘制并列的条形图的方法_python matplotlib库绘制条形图练习题
  18. vb outlook发邮件
  19. Java在成都表现如何?
  20. Oracle建立表空间和用户

热门文章

  1. msyql show命令(转)
  2. 在清华听演讲系列音频下载地址收集
  3. Windows 7各服务项介绍
  4. orale客户端与数据库连接
  5. expect监控 雏形 scp用法
  6. 链表反转的两种实现方法
  7. 《剑指offer》第三十一题(栈的压入、弹出序列)
  8. BZOJ1078 [SCOI2008]斜堆 堆
  9. (转)PCB中各层的含义(protel中)
  10. matlab用socket线程发送数据,使用Python Twisted和Autobahn从Matlab通过WebSocket发送JSON数据...