创建数据库用于测试

配置数据库连接

打开yii的配置文件目录下的数据库配置文件config/db.php

 <?php

 return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=数据库地址;dbname=数据库名称',
'username' => '账号',
'password' => '密码',
'charset' => 'utf8',
];

填写相关配置,注意:需要开启php的pdo扩展

创建活动记录类

活动记录类和数据库的表关联,用以访问和操作数据库中的数据

一般活动记录类名对应相关联的表名,如果不同在创建活动记录类的时候重写tableName()方法声明表名

活动记录被称为“模型”

models目录创建模型文件

 <?php
namespace app\models; use yii\db\ActiveRecord; class Article extends ActiveRecord{ }

类名和模型文件名称相同

需要定义明命空间为namespace app\models;

继承yii\db\ActiveRecord;

调用模型

在控制器中调用模型获取数据

 <?php
namespace app\controllers; use yii;
use yii\web\Controller;
use app\models\Article; class HomeController extends Controller{ public $layout = "home"; function actionIndex(){ $request = Yii::$app->request;
$id = $request->get("id"); // 定义sql语句,:id是占位符,防止sql注入
$sql = "select * from article where id = :id";
// 调用查询方法通过sql语句获取数据,第二个参数是给占位符替换内容
$r = Article::findBySql($sql,[":id"=>$id])->all();
dd($r);
// 加载视图
return $this->render("index",compact("host","text"));
}
}

结果如下:

yii提供了防止sql注入的方法

在定义sql语句时用户输入内容采用了占位符

在调用查询方法时将数据和占位符匹配绑定和其他处理,并不是直接拼接sql语句

基本的查询操作

// 获取全部数据
$data = Article::find()->all();
// 获取id=5的记录
$data = Article::find()->where(["id"=>5])->all();
// 获取id>5的记录
$data = Article::find()->where([">","id",5])->all();
// 获取id>2,id<5之间的记录
$data = Article::find()->where(["between","id",2,5])->all();
// 模糊查询like
$data = Article::find()->where(["like","title","Google"],[">","id",3])->all();
// 获取一条记录,默认条件是id
$data = Article::findOne(5);
// 获取多天记录
$data = Article::findAll([2,3,5]);

详细的可以查看中文文档http://www.yiichina.com/doc/guide/2.0/db-active-record

yii学习笔记(6),连接数据库,创建活动记录类的更多相关文章

  1. yii学习笔记(6),数据库操作(增删改)

    数据库增删改操作通过活动记录实例来完成 插入记录 /* ----------添加记录---------- */ // 创建活动记录对象 $article = new Article(); $artic ...

  2. InterSystems Ensemble学习笔记(二) Ensemble创建镜像, 实现自动故障转移

    系列目录 InterSystems Ensemble学习笔记(一) Ensemble介绍及安装InterSystems Ensemble学习笔记(二) Ensemble创建镜像, 实现自动故障转移 一 ...

  3. 【opencv学习笔记八】创建TrackBar轨迹条

    createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...

  4. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78516 ...

  5. C#可扩展编程之MEF学习笔记(三):导出类的方法和属性

    前面说完了导入和导出的几种方法,如果大家细心的话会注意到前面我们导出的都是类,那么方法和属性能不能导出呢???答案是肯定的,下面就来说下MEF是如何导出方法和属性的. 还是前面的代码,第二篇中已经提供 ...

  6. Android学习笔记(六)——活动的启动模式

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 活动的启动模式共有四种: standard.singleTop.singleTask 和 singleInst ...

  7. Android学习笔记(五)——活动的生命周期

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 为了能写出流畅连贯的程序,我们需要了解一下活动的生命周期. 一.返回栈 Android 中的活动是可以层叠的. ...

  8. yii学习笔记(四)

    return $this->goBack(); // 先看看Yii::$app->user->returnUrl是否已经设置, returnUrl没有设置且goBack()中的参数也 ...

  9. SharpGL学习笔记(十一) 光源创建的综合例子:光源参数可调节的测试场景

    灯光的测试例子:光源参数可以调节的测试场景 先看一下测试场景和效果. 场景中可以切换视图, 以方便观察三维体和灯光的位置.环境光,漫射光,镜面反射光都可以在四种颜色间切换. 灯光位置和摄像机位置(Lo ...

随机推荐

  1. HTML 段落p

    可以把 HTML 文档分割为若干段落. HTML 段落 段落是通过 <p> 标签定义的. 实例 <p>This is a paragraph</p> <p&g ...

  2. Redis缓存方案

    1 Redis简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发 ...

  3. x64 QWORD Xor shellcode encoder

    #!/usr/bin/env python #Filename: Xor_QWORD_x64.py #coding=utf-8 import re import sys import random i ...

  4. 获取Excel的单元格数据类型(靠谱)

    VBA中,单元格属性有NumberFormat可以获取单元格格式,比如: G/通式格式→常规 @→文本 yyyy/m/d→日期 问题: G/通式格式,无法知道值是整数还是浮点数, yyyy/m/d如果 ...

  5. June 23rd 2017 Week 25th Friday

    Life doesn't get easier, you just get stronger. 生活从未变得轻松,是你在一点一点变得坚强. So in the same way we can get ...

  6. OC基础数据类型-NSNumber

    1.NSNumber:专门用来装基础类型的对象,把整型.单精度.双精度.字符型等基础类型存储为对象 //基本数据类型 //专门用来装基础类型的对象 NSNumber * intNumber = [[N ...

  7. MapReduce编程中常用的字符操作

    本文主要用于记录自己在编写mapreduce程序时常用的一些方法,后期会不断更新,用于自己复习和给新手一些帮助. 字符串操作 String str = " 12345"; // 字 ...

  8. 3.为JDeveloper添加不能的workspace

    1.点击选中JDeveloper,在属性中,选中快捷方式, 可以看到目标中的值为C:\Oracle\Middleware\jdeveloper\jdeveloper.exe, 只需要在修改为C:\Or ...

  9. HDU 3292 【佩尔方程求解 && 矩阵快速幂】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=3292 No more tricks, Mr Nanguo Time Limit: 3000/1000 M ...

  10. list,arraylist,哈希表,字典,datatable的selct等等用法

    例子一.获取到list中的最大值,极其索引 List<int> ls = new List<int>();            ls.Add(1);            l ...