14-15.Yii2.0模型的创建/读取数据使用,框架防止sql注入
2024-09-04 00:29:31
目录
目录
创建数据库 表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
{
}
访问效果:
最新文章
- 构建自己的PHP框架--定义ORM的接口
- 《SSM框架搭建》二.mybatis3,spring4整合
- 在HTML标签<;a/>;中调用javascript代码
- Graph(2014辽宁ACM省赛)
- Centos6.5最小化安装:配置网络和自启动服务
- Matlab pivotgolf
- linux下多进程的调试
- javascript 数据类型 -- 分类
- 512MB内存VPS服务器安装宝塔WEB客户端建站 - 环境部署篇
- Lodop控件NewPage();测试输出空白页
- Facebook的React Native之所以能打败谷歌的原因有7个(ReactNative vs Flutter)
- Daily Sentence(英语每日一句)
- asp.net mvc 中[Authorize]在IE9以上版本关于FormsAuthentication.SetAuthCookie无效的问题 解决方案
- Android编译系统入门(二)
- 转载:浅析@PathVariable 和 @RequestParam
- Spring Boot application.yml bootstrap.yml
- 识别真假搜索引擎(搜索蜘蛛)方法(baidu,google,Msn,sogou,soso等)
- Linux操作系统,服务器端的主流
- Python 循环退出
- 初识Linux(二)--命令行基本操作
热门文章
- [Java]HashSet的工作原理
- Python 踩坑之旅进程篇其三pgid是个什么鬼 (子进程\子孙进程无法kill 退出的解法)
- P4878 道路修建-美国
- 在Unity3d中解析Lua脚本的方法
- 使用history.replaceState 修改url 不跳转
- Oracle创建用户、表(1)
- Eclipse IDE配置PHP开发、调试环境
- 理解Postgres性能
- HDU 3592 World Exhibition (差分约束,spfa,水)
- 苹果ATS Win2008 R2 IIS7.5 HTTPS 证书的那些可能遇到的坑