Yii Framework2.0开发教程(5)数据库mysql性能
继续《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>';
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh5b3VsdW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
整个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性能的更多相关文章
- Yii Framework2.0开发教程(3)数据库mysql入门
沿用教程(2)的代码 第一步.在本地mysql数据库中新建数据库zhyoulun 第二步.在数据库中新建表并插入若干条数据 CREATE TABLE `country` ( `code` CHAR(2 ...
- Yii Framework2.0开发教程(10)配合mysql数据库实现用户登录
1.首先在mysql创建一个存用户的表格 create table test_user ( user_id bigint(20) unsigned not null auto_increment co ...
- Yii Framework2.0开发教程(1)配置环境及第一个应用HelloWorld
准备工作: 我用的开发环境是windows下的apache+mysql+php 编辑器不知道该用哪个好.临时用dreamweaver吧 我自己的http://localhost/相应的根文件夹是E:/ ...
- Yii Framework2.0开发教程(2)使用表单Form
第一步.接着教程(1).我们在controllers/ZhyoulunController.php中加入两处, 1) use app\models\EntryForm; 和 2) public fun ...
- Yii Framework2.0开发教程(4)在yii中定义全局变量
在yii中定义全局变量最好的地方是入口脚本处.也就是web目录中的index.php文件 比如我们在defined('YII_ENV') or define('YII_ENV', 'dev');后写上 ...
- Java面试准备十六:数据库——MySQL性能优化
2017年04月20日 13:09:43 阅读数:6837 这里只是为了记录,由于自身水平实在不怎么样,难免错误百出,有错的地方还望大家多多指出,谢谢. 来自MySQL性能优化的最佳20+经验 为查询 ...
- YII2.0安装教程,数据库配置前后台 [ 2.0 版本 ]
1.首先下载yii-advanced-app-2.0.6.tgz 2.解压到D:\wamp\www\yii2目录下面将目录advanced下所有文件剪切到 D:\wamp\www\yii2 3.打开c ...
- YII2.0安装教程,数据库配置前后台
1.首先下载yii-advanced-app-2.0.6.tgz 我本地服务用的是Apache 2.解压到E:\wamp\www\yii2目录下面将目录advanced下所有文件剪切到 E:\wamp ...
- 数据库Mysql性能优化
http://www.cnblogs.com/itxiongwei/p/5533995.html
随机推荐
- 【原创】leetCodeOj --- Interleaving String 解题报告
题目地址: https://oj.leetcode.com/problems/interleaving-string/ 题目内容: Given s1, s2, s3, find whether s3 ...
- SqlServer service broker 分布式系统(赵松桃)跳水 2005 数据库编程
1.创建一个测试数据库 create database ServerbrokerTest on primary( name=ServerbrokerTest_data, filename='C:\Pr ...
- ASP.NET执行循序
首先第一次运行一个应用程序(WebSite或者WebApplication都是Web应用程序)第一次请求 -> 1,IIS -> 2,aspnet_isapi(非托管dll) -> ...
- Web Reference for a WCF Service has Extra “IdSpecified” Parameter ?
Question: I created a WCF service that exposed a method that has one paramater: public class Service ...
- 从头开始建网站(三)DNS
前面介绍了站点搭建所须要的两大要素:域名和server,这次要说的是域名解析,也就是把域名和server进行绑定的过程. 我们在訪问网络时,网址会被发送到DNSserver,然后由DNSserver返 ...
- LightOJ1010---Knights in Chessboard (规律题)
Given an m x n chessboard where you want to place chess knights. You have to find the number of maxi ...
- UVA580-Critical Mass
题目链接 题意:一个栈中仅仅能放入U和L,问存在连续3个以上U(危急组合)的个数为几个 思路:用总组合数-安全组合=危急组合.d[i]表示第i个位置以L结束的序列,所以就有d[i] = d[i - 1 ...
- PHP关联数组和哈希表(hash table) 未指定
PHP有数据的一个非常重要的一类,就是关联数组.又称为哈希表(hash table),是一种很好用的数据结构. 在程序中.我们可能会遇到须要消重的问题,举一个最简单的模型: 有一份username列表 ...
- TCP/IP 网络精讲:开宗明义及第一课
内容简介 1.课程大纲 2.第一部分第一课:互联网历史 3.第一部分第二课预告:互联网的创立,OSI七层模型 课程大纲 我们将带大家一起来学习很多网络方面的技能,向大家介绍TCP/IP的基础知识点.你 ...
- ComboBox 自动调整组合框下拉部分的宽度
/// <summary> /// ComboBox 自动调整组合框下拉部分的宽度 /// </summary> void Resiz ...