基础YII2数据库操作
2016-10-04 00:13
190 查看
基础YII2数据库操作
YII2支持数据库迁移数据库创建对象
\Yii::$app->db->
基础应用模版在配置文件中 config/db.php
return [ 'class' => 'yii\db\Connection', // 组件连接数据库具体的那个类 'dsn' => 'mysql:host=localhost;dbname=yii2basic', // 连接数据库的名字 'username' => 'root', // 用户名 'password' => '', // 密码 'charset' => 'utf8', // 字符集 如果做微信开发就要设置成 utf8md4(这个在mysql数据库中能存4个字节,不然字符串在mysql中只能存3个字节) ]; // 'class' => 'yii\db\Connection', 组件连接数据库具体的那个类,"修改以下这2种方式" 就能点击 Connection 进入这个类的来源 // 'class' => yii\db\Connection::class, // 'class' => yii\db\Connection::className(), /** * 添加新的字段,只要在 Connection 这个类里面有的 */ 'tablePrefix' ='pre_', // 表前缀 如表:pre_user //在 sql 中使用表的时候直接 {{%user}} //$posts = Yii::$app->db->createCommand('SELECT * FROM {{%user}}')->queryAll();
查询 select
// return array(关联数组)|empty array 1) $posts = \Yii::$app->db->createCommand('SELECT * FROM post')->queryAll(); // return string(One)|false 2) $posts = \Yii::$app->db->createCommand('SELECT * FROM post')->queryOne(); // return string(字段)|empty array 3) $titles = \Yii::$app->db->createCommand('SELECT title FROM post')->queryColumn(); // return string(标量值)|false 适用于 count(*) 4)$count = Yii::$app->db->createCommand('SELECT COUNT(*) FROM post')->queryScalar();
注意:为了保持精度,从数据库中取出的数据都被表示为字符串,即使相应的数据库列类型数值。
增 insert into 删 delete 改 update
// return row 返回受影响行数 如果只添加了一行 返回 int1 两行返回 int2 $sql ='insert into {{%user}} (username,password_hash) VALUES (:username,:password_hash)'; // insert update delete 都可以使用这个 $list = \Yii::$app->db->createCommand($sql,['username'=>'liujie','password_hash'=>'123'])->execute(); //添加 yii\db\Command::execute() //方法返回受SQL执行的行数。 $id = \Yii::$app->db->getLastInsertID(); //返回受影响行数主键,放在执行完这条 sql 语句后面即可 对于INSERT,UPDATE和DELETE查询,而不是写简单的SQL后,你可以叫 yii\db\Command::insert(),yii\db\Command::update() 方法, yii\db\Command::delete() 分别建立相应的SQL。这些方法将正确引用表和列名和绑定的参数值。 // INSERT(表名,列值) \Yii::$app->db->createCommand()->insert('user', ['name' => 'Sam', 'age'=> 30,])->execute(); // UPDATE(表名,列值,条件) \Yii::$app->db->createCommand()->update('user', ['status' => 1], 'age > 30')->execute(); // DELETE(表名,条件) \Yii::$app->db->createCommand()->delete('user', 'status = 0')->execute();
当创建从一个带参数的SQL一个DB命令,你应该总是使用绑定参数的方法来防止SQL注入攻击。
>|参数绑定是通过预处理语句来实现。除了防止SQL注入攻击,也可通过一次准备SQL语句和多次使用不同的参数执行它提高性能 yii\db\Command::bindValue():绑定一个参数值 yii\db\Command::bindValues():在一个调用绑定多个参数值 yii\db\Command::bindParam():类似的 yii\db\Command::bindValue(),而且还支持绑定参数引用。 //不太常用 $post = \Yii::$app->db->createCommand('SELECT * FROM post WHERE id=:id AND status=:status') ->bindValue(':id', $_GET['id']) ->bindValue(':status', 1) ->queryOne(); // 不太常用 $params = [':id' => $_GET['id'], ':status' => 1]; $post = \Yii::$app->db->createCommand('SELECT * FROM post WHERE id=:id AND status=:status') ->bindValues($params) ->queryOne(); $params = [':id' => $_GET['id'], ':status' => 1]; $post = \Yii::$app->db->createCommand('SELECT * FROM post WHERE id=:id AND status=:status', $params) ->queryOne(); // 不太常用 $command = \Yii::$app->db->createCommand('SELECT * FROM post WHERE id=:id') ->bindParam(':id', $id); $id = 1; $post1 = $command->queryOne(); $id = 2; $post2 = $command->queryOne(); //一般使用这个 $sql ='insert into {{%user}} (username,password_hash) VALUES (:username,:password_hash)'; // insert update delete 都可以使用这个 $list = \Yii::$app->db->createCommand($sql,['username'=>'liujie','password_hash'=>'123'])->execute(); //添加
相关文章推荐
- Yii2基础:数据库的增删改查操作
- YII2框架学习 基础篇(二) YII2数据库操作
- 转-数据库应用基础系列-第2章 并发操作的一致性问题 (2)
- java数据库操作基础
- 黑马程序员---ADO.NET基础之数据库操作辅助类
- 数据库基础操作
- 数据库开发基本操作-SQL Server数据库基础知识
- MSSQL基础学习--数据库操作
- Android基础教程——数据存储之操作数据库SQLlite(一)
- 关于数据库的一些基础操作
- C#操作数据库基础实例《密码管理工具》
- java基础---->jdbc数据库操作
- asp.net2.0数据库操作基础(转)
- c语言编程基础之数据库操作
- C#数据库编程基础之部分控件应用及DataGridView的操作
- 黑马程序员---ADO.NET基础之操作数据库的几大对象
- Java操作数据库编程基础
- C#数据库编程基础之数据库配置及部分操作数据库技巧
- 【VC++ 中使用ADO操作数据库学习笔记】 基础环境的设置
- DJANGO基础学习之数据库操作