首页 > 开发 > Php > 正文

PHP的Yii框架中使用数据库的配置和SQL操作实例教程

2020-02-21 20:47:05
字体:
来源:转载
供稿:网友

数据库访问 (DAO)
Yii 包含了一个建立在 PHP PDO 之上的数据访问层 (DAO). DAO为不同的数据库提供了一套统一的API. 其中ActiveRecord 提供了数据库与模型(MVC 中的 M,Model) 的交互,QueryBuilder 用于创建动态的查询语句. DAO提供了简单高效的SQL查询,可以用在与数据库交互的各个地方.

Yii 默认支持以下数据库 (DBMS):

MySQL MariaDB SQLite PostgreSQL CUBRID: 版本 >= 9.3 . (由于PHP PDO 扩展的一个bug 引用值会无效,所以你需要在 CUBRID的客户端和服务端都使用 9.3 ) Oracle MSSQL: 版本>=2005.

配置

开始使用数据库首先需要配置数据库连接组件,通过添加 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',    ],  ],  // ...];

请参考PHP manual获取更多有关 DSN 格式信息。 配置连接组件后可以使用以下语法访问:

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

请参考yii/db/Connection获取可配置的属性列表。 如果你想通过ODBC连接数据库,则需要配置yii/db/Connection::driverName 属性,例如:

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

注意:如果需要同时使用多个数据库可以定义 多个 连接组件:

return [  // ...  'components' => [    // ...    'db' => [      'class' => 'yii/db/Connection',      'dsn' => 'mysql:host=localhost;dbname=mydatabase',       'username' => 'root',      'password' => '',      'charset' => 'utf8',    ],    'secondDb' => [      'class' => 'yii/db/Connection',      'dsn' => 'sqlite:/path/to/database/file',     ],  ],  // ...];

在代码中通过以下方式使用:

$primaryConnection = /Yii::$app->db;$secondaryConnection = /Yii::$app->secondDb;            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表