溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php yii框架如何連接數(shù)據(jù)庫(kù)

發(fā)布時(shí)間:2020-12-31 14:47:42 來(lái)源:億速云 閱讀:178 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下php yii框架如何連接數(shù)據(jù)庫(kù),相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

這篇文章主要介紹了PHP的Yii框架中使用數(shù)據(jù)庫(kù)的配置和SQL操作實(shí)例教程,Yii支持綁定多種數(shù)據(jù)庫(kù),文中主要對(duì)各種查詢語(yǔ)句在Yii中的使用給出了例子,需要的朋友可以參考下

php yii框架怎么連接數(shù)據(jù)庫(kù)

數(shù)據(jù)庫(kù)訪問(wèn) (DAO)

Yii 包含了一個(gè)建立在 PHP PDO 之上的數(shù)據(jù)訪問(wèn)層 (DAO). DAO為不同的數(shù)據(jù)庫(kù)提供了一套統(tǒng)一的API. 其中ActiveRecord 提供了數(shù)據(jù)庫(kù)與模型(MVC 中的 M,Model) 的交互,QueryBuilder 用于創(chuàng)建動(dòng)態(tài)的查詢語(yǔ)句. DAO提供了簡(jiǎn)單高效的SQL查詢,可以用在與數(shù)據(jù)庫(kù)交互的各個(gè)地方.

Yii 默認(rèn)支持以下數(shù)據(jù)庫(kù) (DBMS):

MySQLMariaDBSQLitePostgreSQLCUBRID: 版本 >= 9.3 . (由于PHP PDO 擴(kuò)展的一個(gè)bug 引用值會(huì)無(wú)效,所以你需要在 CUBRID的客戶端和服務(wù)端都使用 9.3 )OracleMSSQL: 版本>=2005.

1、配置

開(kāi)始使用數(shù)據(jù)庫(kù)首先需要配置數(shù)據(jù)庫(kù)連接組件,通過(guò)添加 db 組件到應(yīng)用配置實(shí)現(xiàn)("基礎(chǔ)的" Web 應(yīng)用是 config/web.php),DSN( Data Source Name )是數(shù)據(jù)源名稱,用于指定數(shù)據(jù)庫(kù)信息.如下所示:

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', //數(shù)據(jù)庫(kù)用戶名
      'password' => '', //數(shù)據(jù)庫(kù)密碼
      'charset' => 'utf8',
    ],
  ],
  // ...
];

2、配置連接組件后可以使用以下語(yǔ)法訪問(wèn):

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

如果你想通過(guò)ODBC連接數(shù)據(jù)庫(kù),則需要配置yii\db\Connection::driverName 屬性,例如:

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

如果不想定義數(shù)據(jù)庫(kù)連接為全局應(yīng)用組件,可以在代碼中直接初始化使用:

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

3、如果在創(chuàng)建了連接后需要執(zhí)行額外的 SQL 查詢,可以添加以下代碼到應(yīng)用配置文件:

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

如果執(zhí)行 SQL 不返回任何數(shù)據(jù)可使用命令中的 execute 方法:

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

你可以使用insert,update,delete 方法,這些方法會(huì)根據(jù)參數(shù)生成合適的SQL并執(zhí)行.

// 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();

以上是“php yii框架如何連接數(shù)據(jù)庫(kù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI