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

[TOC]

创建数据库 表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

posted @ 2018-09-03 13:30  HaimaBlog  阅读(822)  评论(0编辑  收藏  举报