ThinkPHP3.1新特性之查询条件预处理简介
相较于ThinkPHP 3.0版本对数组形式的查询条件进行安全过滤,而排斥字符串条件的做法,ThinkPHP 3.1版本做出了显著的改进,它现在支持对条件字符串进行预处理,从而使ORM(对象关系映射)的安全性得到了进一步的保障。下面我将详细介绍ThinkPHP 3.1中的查询条件预处理功能,以供大家参考。
在ThinkPHP 3.0版本中,由于强制使用字段类型检测,数组形式的查询条件会被强制转换为字段的设定类型,但并不支持字符串条件的安全过滤。而在ThinkPHP 3.1版本中,这一限制得到了突破。
一、使用where方法
ThinkPHP的Model类中的where方法现在支持条件字符串的预处理。使用方式如下:
```php
$Model->where("id=%d and username='%s' and ='%f'",array($id,$username,$))->select();
```
你也可以直接使用:
```php
$Model->where("id=%d and username='%s' and ='%f'",$id,$username,$)->select();
```
如果$id等变量来自用户提交或URL地址,即使是非数字类型,经过预处理后也会强制格式化为正确的类型(数字、字符串等)进行查询操作。字符串预处理的格式类型可以参考vsprintf方法的参数说明。
二、使用query和execute方法
除了where条件外,原生SQL查询方式也支持预处理机制。例如:
```php
$Model->query("SELECT FROM think_user WHERE id=%d and username='%s' and ='%f'",array($id,$username,$));
```
模型的execute方法同样支持这种预处理机制,这为开发者提供了更大的便利性和安全性。这样的改进不仅提高了代码的可读性,也降低了因SQL注入等安全问题带来的风险。
ThinkPHP 3.1版本在查询条件处理上的改进,使得开发者在使用字符串作为查询条件时,也能享受到和数组条件一样的安全性保障,这无疑是一个令人振奋的消息。
编程语言
- ThinkPHP3.1新特性之查询条件预处理简介
- layui 对弹窗 form表单赋值的实现方法
- php中使用base HTTP验证的方法
- PHP使用strtotime计算两个给定日期之间天数的方法
- jQuery 控制文本框自动缩小字体填充
- 构建免受 FSO 威胁虚拟主机(二)
- 解析isset与is_null的区别
- 解决vue脚手架项目打包后路由视图不显示的问题
- javascript实现无缝上下滚动特效
- PHP使用 Pear 进行安装和卸载包的方法详解
- fckediter javascript事件函数代码
- 微信小程序 详解页面跳转与返回并回传数据
- 在.ashx文件中获取cookies值实现代码
- XMLHTTP多浏览器兼容性写法
- Vue项目中使用Vux的安装过程
- Codeigniter发送邮件的方法