模糊查询'DB_LIKE_FIELDS'设置无效的bug

浏览:1408 发布日期:2015/06/07 分类:求助交流
手册表达式查询like项提示:如果配置了DB_LIKE_FIELDS参数的话,某些字段也会自动进行模糊查询。设置以后无效,原因如下:
Driver.class.php第526行$whereStr .= $this->parseWhereItem($this->parseKey($key),$val);//第526行parseWhereItem()方法的第一个参数进行了解析,$key被加了` `,也就是"title"变成了"`title`"(title为示例),导致第598行返回0if($likeFields && preg_match('/^('.$likeFields.')$/i',$key)) //第598行也就是preg_match('/^(title)$/i','`title`')==0
解决办法,加` `,修改源码为:if($likeFields && preg_match('/^(`'.$likeFields.'`)$/i',$key))修改后再配置'DB_LIKE_FIELDS' OK.'DB_LIKE_FIELDS'='title',

$map['title']='thinkphp';
$result=M(xxx)->where($map)->select();
查询条件就不是 `title`='thinkphp',而是 `title` like '%thinkphp%'.
坑死人..............

最佳答案
评论() 相关
后面还有条评论,点击查看>>