標籤:yii2 framework 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
Yii Framework2.0開發教程(5)資料庫mysql函數