对于那些要实现模糊判断的查询,比如大于、等于、小于之类的SQL查询,可以使用表达式查询方式。
查询表达式格式:$map['字段名'] = array('表达式','查询条件');
表达式 | 含义 |
EQ | 等于(=) |
NEQ | 不等于(<>) |
GT | 大于(>) |
EGT | 大于等于(>=) |
LT | 小于(<) |
ELT | 小于等于(<=) |
[NOT]LIKE(中间无空格) | 模糊查询 |
[NOT] BETWEEN (中间有空格) | (不在)区间查询 |
[NOT] IN | (不在)IN查询 |
EXP | 表达式查询,支持SQL语法 |
PS:表达式不区分大小写。
例子:
//EQ:等于(=)
$map['id'] = array('eq', 1); //where 为id=1
//NEQ:不等于(<>)
$map['id'] = array('neq', 1); //where 为id<>1
//GT:大于(>)
$map['id'] = array('gt', 1); //where 为id>1
//EGT:大于等于(>=)
$map['id'] = array('egt', 1); //where 为id>=1
//LT:小于(<)
$map['id'] = array('lt', 1); //where 为id<1
//ELT:小于等于(<=)
$map['id'] = array('elt', 1); //where 为id<=1
//[NOT]LIKE:模糊查询
$map['user'] = array('like', '%小%'); //where 为like %小%
//[NOT]LIKE:模糊查询
$map['user'] = array('notlike', '%小%'); //where 为not like %小%
//[NOT]LIKE:模糊查询的数组方式
$map['user'] = array('like', array('%小%', '%蜡%'), 'AND');
//生成的SQL
SELECT * FROM `think_user` WHERE ( (`user` LIKE '%小%' AND `user`
LIKE '%蜡%') )
//[NOT] BETWEEN:区间查询
$map['id'] = array('between','1,3');
//where 为`id` BETWEEN '1' AND '2'
//同上等效
$map['id'] = array('between',array('1','3'));
//[NOT] BETWEEN:区间查询
$map['id'] = array('not between','1,3');
//where 为`id` NOT BETWEEN '1' AND '2'
//[NOT] IN:区间查询
$map['id'] = array('in','1,2,4');
//where 为`id` IN ('1','2','4')
//[NOT] IN:区间查询
$map['id'] = array('not in','1,2,4');
//where 为`id` NOT IN ('1','2','4')
//EXP:自定义
$map['id'] = array('exp','in (1,2,4)');
//where 为`id` NOT IN ('1','2','4')
PS:使用exp 自定义在第二个参数直接写where 语句即可
//EXP:自定义增加OR 语句
$map['id'] = array('exp', '=1');
$map['user'] = array('exp', '="蜡笔小新"');
$map['_logic'] = 'OR';
//WHERE 为( (`id` =1) ) OR ( (`user` ="蜡笔小新") )
相关推荐
在ThinkPHP框架中,表达式查询是一种非常实用的功能,它允许开发者使用特定的运算符来构建复杂的查询条件,这些运算符直接映射到SQL查询语句中的相应操作。本文将详细解析ThinkPHP表达式查询的用法,以及如何在where...
在使用时,重要的是要掌握每种表达式的含义和等效的SQL语句,以及了解如何使用exp表达式来构建更加灵活的查询条件。希望本文介绍的ThinkPHP Where条件中常用表达式能够帮助大家更好地理解和运用ThinkPHP框架来操作...
预处理是通过占位符来代替直接将变量拼接到SQL语句中的做法,具体使用时需要配合数组参数进行绑定,这样可以安全地将变量值插入到SQL语句中。例如,可以使用PDO的预处理语句或直接使用ThinkPHP提供的方法进行预处理...
本文将深入探讨ThinkPHP的查询机制,包括查询方式、表达式查询以及安全性的考量,帮助开发者更好地理解和运用这一强大的工具。 首先,我们要了解的是查询语言的引入。ThinkPHP的查询语言旨在解决不同数据库之间的...
使用数组格式`['字段名'] = array('表达式','查询条件')`进行复杂查询,例如范围查询、模糊查询等。表达式包括`gt`(大于)、`lt`(小于)、`eq`(等于)等,可以配合`or`、`and`操作符。 总结:ThinkPHP3.1.2提供的CRUD...
在ThinkPHP中,你可以直接编写SQL语句进行原生查询。例如: ```php $Model = new Model(); $sql = 'select a.id,a.title,b.content from think_test1 as a, think_test2 as b where a.id=b.id '.$map.' order by...
这将在查询时直接附加到SQL语句中。 在实际开发中,应根据业务需求灵活运用这些条件查询方法,以实现高效且精准的数据检索。同时,需要注意的是,在使用`where`条件查询时,确保数据过滤和安全,防止SQL注入攻击。...
7. 支持复合主键和多表操作,增加了模型类的CURD操作,可以仅获取SQL语句而不执行。 8. 增加了连贯操作方法,如using/index/fetchSql/strict/token等。 9. 模型类的setInc和setDec方法增加了延迟写入的支持。 10. I...
该方法使用了ThinkPHP框架的Db类来执行数据库查询,然而,在wp_where方法中存在一个EXP表达式注入漏洞。 EXP表达式注入漏洞是指攻击者可以inject恶意的EXP表达式,导致数据库执行恶意查询,泄露敏感信息或执行任意...
- **查询构造器**:提供了一套链式操作的API,简化了SQL语句的编写。 - **模型操作**:基于ActiveRecord模式,可以直接通过对象操作数据库,如增删改查等。 - **事务处理**:支持事务的开始、提交、回滚,保证...
即SQL查询语句中的where子句。 今天来给大家讲下查询最常用但也是最复杂的where方法,where方法也属于模型类的连贯操作方法之一,主要用于查询和操作条件的设置。 where方法的用法是ThinkPHP查询语言的精髓,也是...
在某些复杂查询或特殊需求下,可能需要直接使用原生SQL语句,这时可以使用`query`或`execute`方法。同时,如果需要指定不同的数据表,可以通过`table`方法实现: ```php $User->table('other_table')->select(); ``...
- **查询构建器**:使用查询构建器构建复杂的SQL语句,提高查询效率和灵活性。 - **查询锁定**:在数据操作中使用锁定机制,防止并发冲突。 - **字段排除**:在查询和更新操作中排除某些字段,保护敏感数据。 - *...
2. 查询构建器:提供了一套简洁易用的查询构建器,让SQL语句的编写变得简单直观。 六、模板引擎 ThinkPHP6内置了模板引擎,支持模板继承、布局、片段调用等功能,使视图层的开发更加便捷。 七、错误处理与调试 ...
- **规则路由中的变量支持**:可以通过正则表达式定义路由中的变量部分,增强路由的灵活性。 - **闭包劫持完善**:支持闭包劫持,增强了路由的扩展性。 - **路由别名支持**:可以为路由设置别名,提高代码的可读性。...
如果需要执行自定义的SQL语句,可以使用`query()`进行读取操作,`execute()`用于写入操作: ```php $result = $m->query("select * from think_user where id > 1"); $result = $m->execute("insert into think_...
3. **数据库操作**:提供了一套完整的数据库操作API,支持SQL语句动态构造,支持事务处理,方便进行数据操作。 4. **模板引擎**:引入了全新的模板引擎,支持变量、控制结构、函数调用等,使得视图层的开发更加灵活...
4. **数据库操作**:ThinkPHP5.1提供了强大的数据库操作类,支持SQL语句的执行、事务处理、预处理语句等,且支持多种数据库类型如MySQL、SQLite、PostgreSQL等。 5. **模型层**:模型层负责业务逻辑和数据操作,5.1...