ThinkPHP 在select查询时 无法使用中文字段原因
来源:互联网 发布:横截面数据eview 编辑:程序博客网 时间:2024/06/03 22:51
在ThinkPHP/Lib/Core/Db.class.php 文件下
protected function parseWhere($where) { $whereStr = ''; if(is_string($where)) { // 直接使用字符串条件 $whereStr = $where; }else{ // 使用数组表达式 $operate = isset($where['_logic'])?strtoupper($where['_logic']):''; if(in_array($operate,array('AND','OR','XOR'))){ // 定义逻辑运算规则 例如 OR XOR AND NOT $operate = ' '.$operate.' '; unset($where['_logic']); }else{ // 默认进行 AND 运算 $operate = ' AND '; } foreach ($where as $key=>$val){ $whereStr .= '( '; if(is_numeric($key)){ $key = '_complex'; } if(0===strpos($key,'_')) { // 解析特殊条件表达式 $whereStr .= $this->parseThinkWhere($key,$val); }else{ // 查询字段的安全过滤 /* if(!preg_match('/^[A-Z_\|\&\-.a-z0-9\(\)\,]+$/',trim($key))){ throw_exception(L('_EXPRESS_ERROR_').':'.$key); }*/ // 多条件支持 $multi = is_array($val) && isset($val['_multi']); $key = trim($key); if(strpos($key,'|')) { // 支持 name|title|nickname 方式定义查询字段 $array = explode('|',$key); $str = array(); foreach ($array as $m=>$k){ $v = $multi?$val[$m]:$val; $str[] = '('.$this->parseWhereItem($this->parseKey($k),$v).')'; } $whereStr .= implode(' OR ',$str); }elseif(strpos($key,'&')){ $array = explode('&',$key); $str = array(); foreach ($array as $m=>$k){ $v = $multi?$val[$m]:$val; $str[] = '('.$this->parseWhereItem($this->parseKey($k),$v).')'; } $whereStr .= implode(' AND ',$str); }else{ $whereStr .= $this->parseWhereItem($this->parseKey($key),$val); } } $whereStr .= ' )'.$operate; } $whereStr = substr($whereStr,0,-strlen($operate)); } return empty($whereStr)?'':' WHERE '.$whereStr; }
在这个函数中 有一个正则表达式的判断 表示只能使用英文字段
/* if(!preg_match('/^[A-Z_\|\&\-.a-z0-9\(\)\,]+$/',trim($key))){ throw_exception(L('_EXPRESS_ERROR_').':'.$key); }*/
这里我暂时把这段话注释了 于是就可以查到 等以后懂了正则表达式后 可以自己来实现一下
0 0
- ThinkPHP 在select查询时 无法使用中文字段原因
- MySQL在字段中使用select子查询
- MySQL在字段中使用select子查询
- MySQL在字段中使用select子查询
- MySQL在字段中使用select子查询
- 模糊查询时能查到英文字段,但是查不到中文字段原因
- thinkphp查询select操作
- thinkPHP 查询数据库字段
- 在 SELECT 查询中使用子查询
- 关于php在查询数据库时某个字段为中文查询失败
- 使用HQL的select查询字段并构造出类
- Thinkphp查询控制字段和查询一条
- 在 SELECT 查询中使用 JOIN 联接
- ThinkPHP之中文分词查询
- Mysql数据库中PreparedStatement 在使用sql语句无法查询中文的问题
- thinkphp新增字段无法插入数据库
- Lazarus无法查询Access数据库中为空的小数字段的原因
- ThinkPHP--数据查询select及smarty配置
- Spring 3 MVC No mapping found for HTTP request with URI (转)
- Hive总结(一)hive初始
- 程序也能是心灵鸡汤
- 欢迎使用CSDN-markdown编辑器
- css修改a标签里面的title的样式
- ThinkPHP 在select查询时 无法使用中文字段原因
- NoSQL数据库之Redis数据库管理六 (Redis的高级应用之事务处理、持久化操作、pub_sub、虚拟内存)
- eclipse 不同工程中文乱码问题(可对文件以及工程单独设置)
- Bash shell脚本打印出正在执行的命令
- 黑马程序员---java内部类
- Redis高级特性:虚拟内存的使用技巧
- CUPS移植记录
- Redis学习手册(内存优化)
- errno、stderr、perror函数和strerror函数