ThinkPHP3.1新特性之查询条件预处理简介


Posted in PHP onJune 19, 2014

以往的ThinkPHP3.0版本对数组方式的查询条件会进行安全过滤(这是由于3.0强制使用了字段类型检测,所以数组方式的查询条件会强制转换为字段的设定类型),但是3.0版本并不支持字符串条件的安全过滤。而ThinkPHP3.1版本则增加了对条件字符串进行预处理的支持,让ORM的安全性更加得以保证。

一、使用where方法

Model类的where方法支持字符串条件预处理,使用方式:
$Model->where("id=%d and username='%s' and
xx='%f'",array($id,$username,$xx))->select();

或者直接使用:

$Model->where("id=%d and username='%s' and xx='%f'",$id,$username,$xx)->select();

如果$id变量来自用户提交或者URL地址的话,如果传入的是非数字类型,则会强制格式化为数字格式后进行查询操作。

字符串预处理格式类型支持指定数字、字符串等,具体可以参考vsprintf方法的参数说明。

二、使用query和execute方法

除了where条件外,对原生SQL查询方式也支持预处理机制,例如:

$Model->query("SELECT * FROM think_user WHERE id=%d and username='%s' and xx='%f'",array($id,$username,$xx));

模型的execute方法也和query方法一样支持预处理机制。

PHP 相关文章推荐
使用 MySQL 开始 PHP 会话
Dec 21 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
Feb 16 PHP
一个简单php扩展介绍与开发教程
Aug 19 PHP
PHP取整数函数常用的四种方法小结
Jul 05 PHP
PHP清除数组中所有字符串两端空格的方法
Oct 20 PHP
php时间戳格式化显示友好的时间函数分享
Oct 21 PHP
php实现字符串首字母大写和单词首字母大写的方法
Mar 14 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
Mar 22 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
Oct 22 PHP
php学习笔记之mb_strstr的基本使用
Feb 03 PHP
Laravel多域名下字段验证的方法
Apr 04 PHP
php中yar框架实例用法讲解
Dec 27 PHP
ThinkPHP3.1新特性之字段合法性检测详解
Jun 19 #PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
Jun 19 #PHP
ThinkPHP的Widget扩展实例
Jun 19 #PHP
ThinkPHP3.1的Widget新用法
Jun 19 #PHP
ThinkPHP3.1新特性之命名范围的使用
Jun 19 #PHP
ThinkPHP3.1新特性之Action参数绑定
Jun 19 #PHP
ThinkPHP3.1新特性之多层MVC的支持
Jun 19 #PHP
You might like
PHP 模板高级篇总结
2006/12/21 PHP
DedeCms模板安装/制作概述
2007/03/11 PHP
php笔记之:AOP的应用
2013/04/24 PHP
yii的CURD操作实例详解
2014/12/04 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
2014/12/19 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
PHP工厂模式、单例模式与注册树模式实例详解
2019/06/03 PHP
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
关于JS中的闭包浅谈
2013/08/23 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
JqueryMobile动态生成listView并实现刷新的两种方法
2014/03/05 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
2015/12/16 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
canvas实现钟表效果
2017/02/13 Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
2018/12/28 Javascript
微信小程序实现bindtap等事件传参
2019/04/08 Javascript
Vue.js实现备忘录功能
2019/06/26 Javascript
element-ui 文件上传修改文件名的方法示例
2019/11/05 Javascript
JS中循环遍历数组的四种方式总结
2021/01/23 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
python实现二分查找算法
2017/09/21 Python
python表格存取的方法
2018/03/07 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
​如何愉快地迁移到 Python 3
2019/04/28 Python
Python tkinter常用操作代码实例
2020/01/03 Python
使用python脚本自动生成K8S-YAML的方法示例
2020/07/12 Python
网页设计个人找工作求职信
2013/11/28 职场文书
社保委托书怎么写
2014/08/02 职场文书
2014年涉外离婚协议书范本
2014/11/20 职场文书
离婚律师函范本
2015/05/27 职场文书
python爬虫框架feapde的使用简介
2021/04/20 Python
使用vue判断当前环境是安卓还是IOS
2022/04/12 Vue.js
关于对TypeScript泛型参数的默认值理解
2022/07/15 Javascript