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 相关文章推荐
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
Dec 06 PHP
php中防止SQL注入的最佳解决方法
Apr 25 PHP
PHP四舍五入精确小数位及取整
Jan 14 PHP
php采集内容中带有图片地址的远程图片并保存的方法
Jan 03 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
Jan 28 PHP
php通过修改header强制图片下载的方法
Mar 24 PHP
PHP获取网页所有连接的方法(附demo源码下载)
Mar 30 PHP
PHP简单实现无限级分类的方法
May 13 PHP
PHP编辑器PhpStrom运行缓慢问题
Feb 21 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
Jul 04 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
May 29 PHP
详解php反序列化
Jun 10 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面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
PHP实现微信发红包程序
2015/08/24 PHP
php格式化时间戳
2016/12/17 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
js下拉菜单语言选项简单实现
2013/09/23 Javascript
解决jquery操作checkbox火狐下第二次无法勾选问题
2014/02/10 Javascript
如何用JavaScript定义一个类
2014/09/12 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
JS实现自动定时切换的简洁网页选项卡效果
2015/10/13 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
bootstrap警告框示例代码分享
2017/05/17 Javascript
vue.js声明式渲染和条件与循环基础知识
2017/07/31 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
小程序云开发初探(小结)
2018/10/24 Javascript
在Koa.js中实现文件上传的接口功能
2019/10/08 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
请说出这段代码执行后a和b的值分别是多少
2015/03/28 面试题
应届生求职推荐信
2013/10/28 职场文书
学生拾金不昧表扬信
2014/01/21 职场文书
会计学专业学生的求职信范文
2014/01/27 职场文书
《祁黄羊》教学反思
2014/04/22 职场文书
禁烟标语大全
2014/06/11 职场文书
法人委托书范本格式
2014/09/15 职场文书
司机个人年终总结
2015/03/03 职场文书
python中对列表的删除和添加方法详解
2022/02/24 Python
nginx常用配置conf的示例代码详解
2022/03/21 Servers