您现在的位置是:首页 > 技术交流技术交流
hinkPHP框架模糊查询’DB_LIKE_FIELDS’设置无效的bug
2017-04-24【技术交流】1915 人已围观
简介手册表达式查询like项提示:如果配置了DB_LIKE_FIELDS参数的话,某些字段也会自动进行模糊查询。设置以后无效,原因如下: ...
手册表达式查询like项提示:如果配置了DB_LIKE_FIELDS参数的话,某些字段也会自动进行模糊查询。设置以后无效,原因如下:
Driver.class.php第526行
$whereStr .= $this->parseWhereItem($this->parseKey($key),$val);//第526行
parseWhereItem()方法的第一个参数进行了解析,$key被加了 ,也就是\"title\"变成了\"title\"(title为示例),导致第598行返回0
if($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();
关注宁波网站建设博客,更多精彩分享,敬请期待!
Driver.class.php第526行
$whereStr .= $this->parseWhereItem($this->parseKey($key),$val);//第526行
parseWhereItem()方法的第一个参数进行了解析,$key被加了 ,也就是\"title\"变成了\"title\"(title为示例),导致第598行返回0
if($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%\'.
这个上参数的配置,简单的来说就是把原本等于号起来的查询条件变成like模糊查询. 我个人感觉可有可无的设置
关注宁波网站建设博客,更多精彩分享,敬请期待!
Tags:
很赞哦! ()
相关文章
随机图文
-
FTP的port模式和pasv模式
经常使用ftp工具进行网站文件的上传和下载.有时因为网络环境和服务器配置问题,经常遇到ftp工具卡顿问题.这时就需要切换port和pas... -
在HTML语言中<blockquote>
html5的标签,用在菜单或者搜索部分或者文字特别说明部分居多.就是在这个标签内部的元素显示的时候都会向右缩进一个单位长度(通常是4个空格的... -
建站小插件推荐:图片放大缩小zoomerang.js
Zoomerang.js是一款非常实用的HTML DOM元素放大缩小js特效插件。它可以将页面上的任何元素进行放大缩小。当某个元素处于Zoo... -
二维码常见数据格式标准
随着智能设备的普及,二维码(2D barcode or QR code=Quick reference code)的使用越来越广泛,用智能...