目录

创建数据库 表article

1.创建库表

CREATE TABLE `article` (
`article_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'article_id',
`article_title` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`article_id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

2.添加几条数据供测试用

配置 db.php 连接数据库

D:\phpStudy\WWW\yii\config\db.php


return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=114.67.230.000;dbname=yii',
'username' => 'root',
'password' => '000000',
'charset' => 'utf8', // Schema cache options (for production environment)
//'enableSchemaCache' => true,
//'schemaCacheDuration' => 60,
//'schemaCache' => 'cache',
];

创建控制器 HomeController.php

D:\phpStudy\WWW\yii\controllers\HomeController.php

<?php
/**
* Created by Haima.
* Author:Haima
* QQ:228654416
* Date: 2018/9/3
* Time: 10:30
*/ namespace app\controllers; use app\models\Article;
use yii\base\Controller; class HomeController extends Controller
{
//用属性的方法定义父模板
//会自动加载D:\phpStudy\WWW\yii\views\layouts\home.php文件
public $layout = 'home';
public function actionIndex()
{
$request = \Yii::$app->request; // 方法一:普通的查询方式(会有SQL注入的危险)
// $article_id = $request->get('article_id',1);
// $sql = 'select * from article where article_id =' . $article_id;
// $article = Article::findBySql($sql)->all(); // 方法二:预处理,防SQL注入
$article_id = $request->get('article_id', 1);
$sql = "select * from article where article_id = :article_id"; //预处理,防SQL注入 :article_id占位符
$article = Article::findBySql($sql, [':article_id' => $article_id])->all();
dump($article);die; //会自动加载父模板 D:\phpStudy\WWW\yii\views\layouts\home.php
return $this->render('index');
}
}

创建models

D:\phpStudy\WWW\yii\models\Article.php

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

访问效果:

http://yii.com/?r=home/index&article_id=4

14-15.Yii2.0模型的创建/读取数据使用,框架防止sql注入的更多相关文章

  1. [MISS静IOS开发原创文摘]-AppDelegate存储全局变量和 NSUserDefaults standardUserDefaults 通过模型保存和读取数据,存储自定义的对象

    由于app开发的需求,需要从api接口获得json格式数据并保存临时的 app的主题颜色 和 相关url 方案有很多种: 1, 通过AppDelegate保存为全局变量,再获取 2,使用NSUSerD ...

  2. yii2.0使用ActionForm创建表单

    文本框:textInput(); 密码框:passwordInput(); 单选框:radio(),radioList(); 复选框:checkbox(),checkboxList(); 下拉框:dr ...

  3. YII2.0 用GII创建视图文件后访问404

    使用GII的CRUD Generator创建searchModelClass 和控制器类文件,视图文件后,访问控制器地址后出现404的情况. 创建过程如图所示 后来发现是控制器类 Controller ...

  4. 15.Yii2.0框架where单表查询

    目录 新建控制器 HomeController.php 新建model article.php 新建控制器 HomeController.php D:\xampp\htdocs\yii\control ...

  5. Yii2.0中文开发向导——删除数据

    直接 model 删除 $model = User::find($id); $model->delete(); 带有条件的删除 $connection ->createCommand() ...

  6. mongoDB3.0版本使用express读取数据

    使用express连接数据库操作 var express = require('express'); var app = express(); var MongoClient = require('m ...

  7. yii2.0在model里自定义数据表

    无需多言,直接撸代码 class Zhuanjia extends \yii\db\ActiveRecord { public static function tableName() { return ...

  8. Mybatis3.0防止SQL注入

    一.什么是SQL注入 引用搜狗百科: SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如很多影视网站泄露VIP会员密码大 ...

  9. netty源码解解析(4.0)-14 Channel NIO实现:读取数据

     本章分析Nio Channel的数据读取功能的实现. Channel读取数据需要Channel和ChannelHandler配合使用,netty设计数据读取功能包括三个要素:Channel, Eve ...

随机推荐

  1. jQuery.data() 与 jQuery(elem).data()源码解读

    之前一直以为 jQuery(elem).data()是在内部调用了 jQuery.data(),看了代码后发现不是.但是这两个还是需要放在一起看,因为它们内部都使用了jQuery的数据缓存机制.好吧, ...

  2. Ubuntu搭建WordPress-MySQL-Apache

    目标 技术博客www.xifarm.com有5年时间了. 原来在虚拟机/VPS上搭建,不过都是Windows系统下的. 最近突发奇想,试试迁移到Linux的Unbuntu下.说干就干,抽空用了大约3天 ...

  3. EF批量插入数据耗时对比

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. 在 cell 中获取 textFlied内容的使用

    当您读到这里时,建议先下载demo,不懂再参考博客.在iOS项目开发中,容易遇到各种个人信息填写.比如微信中设置个人信息,等.这种方式是进行控制器跳转,代理或者block传值,这种比较容易,符合常规的 ...

  5. 【踩坑】springMVC 接收String参数没有判断为空

    今天在调试iReview项目的接口时,发现新增词条和新增库的时候,某些字段即使留空POST到后台时也能当做不为空. 经过排查,发现后台是使用 String 变量名 == null 这样的语句去判断变量 ...

  6. javascript结合nodejs实现多文件上传

    前端文件上传功能比较依赖后端,所以第一步用nodejs实现一个供文件上传的功能接口. 因为本人对nodejs也是一知半解,所以刚开始的想法是像原始的ajax交互那样,获取上传文件的内容,然后再通过no ...

  7. cpu 满载测试软件

    for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/d ...

  8. freebsd问题

    http://community.spiceworks.com/topic/91708-server-freezes

  9. Python之时间表示

    Python的time模块中提供了丰富的关于时间操作方法,可以利用这些方法来完成这个需求. time.time() :获取当前时间戳 time.ctime(): 当前时间的字符串形式 time.loc ...

  10. ADO.Net——防止SQL注入攻击

    规避SQL注入 如果不规避,在黑窗口里面输入内容时利用拼接语句可以对数据进行攻击 如:输入Code值 p001' union select * from Info where '1'='1 //这样可 ...