ThinkPHP v3.1开发框架新特性:查询条件预处理

3.0版本对数组方式的查询条件会进行安全过滤(由于3.0强制使用了字段类型检测,所以数组方式的查询条件会强制转换为字段的设定类型),但不支持字符串条件的安全过滤。3.1版本则增加了对条件字符串增加了预处理支持,让ORM的安全性更加得以保证。
一、使用where方法
Model类的where方法支持字符串条件预处理,使用方式:

$Model->where("id=%d&">nbsp;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方法一样支持预处理机制。

时间: 2024-10-03 02:16:21

ThinkPHP v3.1开发框架新特性:查询条件预处理的相关文章

ThinkPHP v3.1开发框架新特性:多数据操作的完善

正常情况下,如果应用只是操作同一个数据库(或者分布式数据库)的话,你只需要在项目配置文件中定义数据库连接信息即可.这里说的多数据库操作一般指的是在一个应用中会操作不同的数据库(包括同类型的和不同类型的数据库),甚至包括动态切换多数据库的情况.早期版本的ThinkPHP切换数据库需要使用高级模型,现在可以更加轻松的解决了.新版对多数据的支持有下面几种方式,http://www.aliyun.com/zixun/aggregation/7155.html">开发人员可以根据实际情况选择合适的方

ThinkPHP v3.1开发框架新特性:Ajax支持完善

3.1对AJAX的支持更加完善了,表现在: 判断AJAX方式改进 现在可以直接使用常量IS_AJAX来判断是否AJAX方式请求,用来取代之前的http://www.aliyun.com/zixun/aggregation/16339.html">Action类的isAjax方法,优势是可以在任何代码里面进行判断.而Action类的error和success方法内置就支持对AJAX自动判断支持. ajaxReturn方法完善 原来的ajaxReturn方法只能返回固定结构的数据,包括data

ThinkPHP v3.1开发框架新特性:内容解析输出

ThinkPHP中页面输出的过程是读取模板文件,然后进行模板解析(也支持调用第三方模板引擎解析),但是有一些情况,我们并没有定义模板文件,或者把模板文件保存在数据库里面,那么这个时候进行页面输出的时候,我们是无法进行模板文件读取的,3.1版本则针对这样的情况增加了内容解析输出的功能.内置的模板引擎也进行了完善,如果传入的模板文件不存在的话,则会认为是传入的模板解析内容,因此,3.1的View类和http://www.aliyun.com/zixun/aggregation/16339.html"

ThinkPHP v3.1开发框架新特性:页面压缩输出支持

现在大多数浏览器都已经支持页面的压缩输出,通过压缩输出,页面大小可以减少30%,由于3.0版本没有内置页面压缩输出功能,所以一般来说,需要自己在入口文件中添加: ob_start('ob_gzhanhttp://www.aliyun.com/zixun/aggregation/16504.html">dler'); 但是由于服务器环境的不同,8630.html">有时候这个配置会和php.ini文件中的zlib压缩配置冲突.3.1新版则内置了页面压缩输出功能,不需要再手动添

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

以往的ThinkPHP3.0版本对数组方式的查询条件会进行安全过滤(这是由于3.0强制使用了字段类型检测,所以数组方式的查询条件会强制转换为字段的设定类型),但是3.0版本并不支持字符串条件的安全过滤.而ThinkPHP3.1版本则增加了对条件字符串进行预处理的支持,让ORM的安全性更加得以保证. 一.使用where方法 Model类的where方法支持字符串条件预处理,使用方式: $Model->where("id=%d and username='%s' and xx='%f'&quo

探索Eclipse V3.1的新特性

这份教程演示了 Eclipse 的最新发行版 V3.1 中的许多新特性.如果正考虑 从以前的发行版升级到 V3.1,或者正考虑从其他集成开发环境转到 Eclipse, 那么您会发现本教程非常有用.如果想修改代码,以利用 Java 语言的 最新一代 Java 2 Standard Edition V1.5(为 Java 编程语言添加了许多强大 的结构和便利),本教程也会给您带来很大的帮助. 预备知识 了解本教程的学习目标和最佳学习方式. 关于本教 程 本教程演示了 Eclipse 的最新发行版 V

了解ThinkPHP v3.1.3版本新特性

官方昨天http://www.aliyun.com/zixun/aggregation/18782.html">正式发布了ThinkPHP3.1.3版本,从版本号来看,该版本只是一个小版本更新.但是有一些特性,还是值得关注的,下面来简单说下. 一.异常方面的改进. 新版重写了异常类ThinkException(其实是完全简化成了直接继承系统Exception类),并且把异常逻辑改进封装到Think类中.主要涉及到Think类的appException方法和halt函数.并且改进后的异常处理

新Orcas语言特性-查询句法_oracle

[原文地址]New "Orcas" Language Feature: Query Syntax [原文发表日期] Saturday, April 21, 2007 2:12 上个月我开始了一个贴子系列,讨论作为Visual Studio和.NET框架Orcas版本一部分发布的一些新的VB和C#语言特性.下面是该系列的前三篇贴子的链接: 自动属性,对象初始化器,和集合初始化器 扩展方法 Lambda表达式 今天的贴子要讨论另一个基础性的新语言特性:查询句法(Query Syntax).

Oracle 12c新特性:多租户中使用 CONTAINERS 语句跨越PDB查询

张乐奕 云和恩墨副总经理,Oracle ACE总监,ACOUG 联合创始人 在最新版本的 Oracle Database 12.1.0.2 中,新特性提供了 PDB Containers 子句,用以从 CDB$ROOT 层面直接聚合查询多个 PDB 中同一张表的数据.在新特性文档中该段如下描述: 但是实现起来并非看上去如此简单. 现有测试环境如下:当前 CDB 中有 2 个 PDB,分别是 PDB1 和 PDB2:每个 PDB 中都有一个相同名字的 Local User,为 KAMUS:每个 K