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框架怎么连接数据库的详细内容。
