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>';

整个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

时间: 2024-10-06 16:14:26

Yii Framework2.0开发教程(5)数据库mysql函数的相关文章

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 或更高版本号,如需使用 L

Yii Framework2.0开发教程(8)输入验证

validate() 方法,在幕后为执行验证操作.先看一个简单的例子,例子的代码在<Yii Framework2.0开发教程(2)使用表单Form>. 类ZhyoulunController中函数actionEntry() ,其中有一句$model->validate(),就是来判断输入的名字和电子邮件是否正确. 修改models/EntryForm.php <?php namespace app\models; use yii\base\Model; class EntryFor

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

沿用教程(2)的代码 第一步.在本地mysql数据库中新建数据库zhyoulun 第二步.在数据库中新建表并插入若干条数据 CREATE TABLE `country` ( `code` CHAR(2) NOT NULL PRIMARY KEY, `name` CHAR(52) NOT NULL, `population` INT(11) NOT NULL DEFAULT '0' ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `country

Yii Framework2.0开发教程(10)配合mysql数据库实现用户登录

1.首先在mysql创建一个存用户的表格 create table test_user ( user_id bigint(20) unsigned not null auto_increment comment 'ID', user_email varchar(100) not null comment '电子邮件', user_password varchar(100) not null comment '密码', user_access_token varchar(200) comment

Yii Framework2.0开发教程(6)数据库mysql--ActiveRecord

Active Record(活动记录,以下简称AR)提供了一个面向对象的接口,用以访问数据库中的数据. 一个AR 类关联一张数据表,每个 AR 对象对应表中的一行,对象的属性(即 AR 的特性Attribute)映射到数据行的对应列. 一条活动记录(AR对象)对应数据表的一行,AR对象的属性则映射该行的相应列. 您可以直接以面向对象的方式来操纵数据表中的数据,妈妈再不用担心我需要写原生 SQL 语句啦. 编辑models/Country.php <?php namespace app\model

Yii Framework2.0开发教程(4)在yii中定义全局变量

在yii中定义全局变量最好的地方是入口脚本处.也就是web文件夹中的index.php文件 例如我们在defined('YII_ENV') or define('YII_ENV', 'dev');后写上 defined('ZYL_HEHE') or define('ZYL_HEHE','zhyoulun-hehe'); 并在我们教程(1)中建立的views/zhyoulun/helloworld.php文件中写上 <?php echo 'hello world!'; //全局变量 echo co

Yii Framework2.0开发教程(7)账户注册开发

注册的过程:用户输入数据->提交服务器->插入数据库 由于AR继承自[[yii\base\Model]],所以它同样也支持Model的数据输入.验证等特性.例如,你可以声明一个rules方法用来覆盖掉[[yii\base\Model::rules()|rules()]]里的:你也可以给AR实例批量赋值:你也可以通过调用[[yii\base\Model::validate()|validate()]]执行数据验证. 当你调用 save().insert().update() 这三个方法时,会自动

VS2008下 使用C#做windows mobile 6.0开发 使用sqlite数据库

我使用的VS2008英文版的,不喜欢用中文版的. 现在用C#做相关开发,用到sqlite数据库. 网上找了很多,真正的教程特别少,都是贴的一堆垃圾代码.要么是无法配置通过的,错误一大堆,哎. 最后还是自己想办法解决了. 1.下载sqlite的运行库,首先网上的教程是让我们去http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki下载,但是页面上那么多,我们该选择哪个呢?   网页翻到最下面的  Legacy Ver

第二百八十五节,MySQL数据库-MySQL函数

MySQL数据库-MySQL函数 1.MySQL内置函数 SELECT执行函数,后面跟要执行的函数 CHAR_LENGTH(str)函数:返回字符串的字符长度 -- CHAR_LENGTH(str)函数:返回字符串的字符长度 SELECT CHAR_LENGTH('欢迎光临'); LENGTH(str)函数:返回字符串的字节长度 -- LENGTH(str)函数:返回字符串的字节长度 SELECT LENGTH('欢迎光临'); CONCAT(str1,str2,...)函数:拼接字符串 --