首頁 >php框架 >YII >php yii框架怎麼連接資料庫

php yii框架怎麼連接資料庫

angryTom
angryTom原創
2019-11-04 14:15:582900瀏覽

這篇文章主要介紹了PHP的Yii框架中使用資料庫的配置和SQL操作實例教程,Yii支援綁定多種資料庫,文中主要對各種查詢語句在Yii中的使用給出了例子,需要的朋友可以參考下

php yii框架怎麼連接資料庫

php yii框架怎麼連接資料庫

資料庫存取( DAO)

Yii 包含了一個建立在PHP PDO 之上的資料存取層(DAO). DAO為不同的資料庫提供了一套統一的API. 其中ActiveRecord 提供了資料庫與模型( MVC 中的M,Model) 的交互,QueryBuilder 用於創建動態的查詢語句. DAO提供了簡單高效的SQL查詢,可以用在與資料庫交互的各個地方.

Yii 預設支援以下資料庫( DBMS):

MySQLMariaDBSQLitePostgreSQLCUBRID: 版本>= 9.3 . (由於PHP PDO 擴展的一個bug 引用值會無效,所以你需要在CUBRID的客戶端和服務端都使用9.3 )OracleMSSQL: 版本> =2005.

1、配置

開始使用資料庫首先需要配置資料庫連接元件,透過新增db 元件到應用程式配置實作("基礎的" Web 應用是config/web.php),DSN( Data Source Name )是資料來源名稱,用於指定資料庫資訊。如下所示:

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',
    ],
  ],
  // ...
];

2、設定連線元件後可使用下列語法存取:

$connection = \Yii::$app->db;

如果你想透過ODBC連接資料庫,則需要設定yii\db\Connection::driverName 屬性,例如:

'db' => [
  'class' => 'yii\db\Connection',
  'driverName' => 'mysql',
  'dsn' => 'odbc:Driver={MySQL};Server=localhost;Database=test',
  'username' => 'root',
  'password' => '',
],

如果不想定義資料庫連線為全域應用程式元件,可以在程式碼中直接初始化使用:

$connection = new \yii\db\Connection([
  'dsn' => $dsn,
   'username' => $username,
   'password' => $password,
]);
$connection->open();

3、如果在建立了連接後需要執行額外的SQL 查詢,可以將以下程式碼新增以下程式碼:

return [
  // ...
  'components' => [
    // ...
    'db' => [
      'class' => 'yii\db\Connection',
      // ...
      'on afterOpen' => function($event) {
        $event->sender->createCommand("SET time_zone = 'UTC'")->execute();
      }
    ],
  ],
  // ...
];

如果執行SQL 不回傳任何資料可使用指令中的execute 方法:

$command = $connection->createCommand('UPDATE post SET status=1 WHERE id=1');
$command->execute();

你可以使用insert,update,delete 方法,這些方法會根據參數產生適當的SQL並執行.

// INSERT
$connection->createCommand()->insert('user', [
  'name' => 'Sam',
  'age' => 30,
])->execute();
// INSERT 一次插入多行
$connection->createCommand()->batchInsert('user', ['name', 'age'], [
  ['Tom', 30],
  ['Jane', 20],
  ['Linda', 25],
])->execute();
// UPDATE
$connection->createCommand()->update('user', ['status' => 1], 'age > 30')->execute();
// DELETE
$connection->createCommand()->delete('user', 'status = 0')->execute();

推薦:《YII教學

以上是php yii框架怎麼連接資料庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn