php yii框架怎么连接数据库

发布时间 - 2019-11-04 00:00:00    点击率:

这篇文章主要介绍了php的yii框架中使用数据库的配置和sql操作实例教程,yii支持绑定多种数据库,文中主要对各种查询语句在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教程》


# yii  # php  # mvc  # sql  # pdo  # delete  # 数据库  # bug 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么使用artisan命令缓存配置和视图  Android Socket接口实现即时通讯实例代码  如何在自有机房高效搭建专业网站?  HTML 中如何正确使用模板变量为元素的 name 属性赋值  如何用免费手机建站系统零基础打造专业网站?  javascript读取文本节点方法小结  北京网站制作的公司有哪些,北京白云观官方网站?  简单实现Android验证码  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  图册素材网站设计制作软件,图册的导出方式有几种?  Laravel如何实现文件上传和存储?(本地与S3配置)  如何在Windows虚拟主机上快速搭建网站?  如何在IIS中新建站点并配置端口与物理路径?  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  使用Dockerfile构建java web环境  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  详解Android图表 MPAndroidChart折线图  如何在腾讯云服务器上快速搭建个人网站?  Java类加载基本过程详细介绍  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  详解MySQL数据库的安装与密码配置  Laravel定时任务怎么设置_Laravel Crontab调度器配置  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  如何构建满足综合性能需求的优质建站方案?  如何用PHP快速搭建CMS系统?  如何在腾讯云免费申请建站?  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  千库网官网入口推荐 千库网设计创意平台入口  大同网页,大同瑞慈医院官网?  详解Android中Activity的四大启动模式实验简述  Laravel集合Collection怎么用_Laravel集合常用函数详解  Laravel如何实现用户注册和登录?(Auth脚手架指南)  教你用AI润色文章,让你的文字表达更专业  JavaScript如何实现音频处理_Web Audio API如何工作?  Java垃圾回收器的方法和原理总结  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  Laravel PHP版本要求一览_Laravel各版本环境要求对照  JavaScript实现Fly Bird小游戏  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  Android实现代码画虚线边框背景效果  利用JavaScript实现拖拽改变元素大小  微信小程序 require机制详解及实例代码  香港服务器租用费用高吗?如何避免常见误区?  如何用搬瓦工VPS快速搭建个人网站?