thinkphp数组查询问题

friends571 2015-09-19 10:20:05
thinkphp中查询条件为
$map['id'] = I('get.id');
$map['cid'] = i('get.cid');
$m->where($map)->find();


生成的SQL语句为
SELECT `id`,`title`,`pic` FROM `news` WHERE `id` = null AND `cid` = null  LIMIT 0,12


也就是说,当获取的ID和CID为空时,这个查询条件还是存在的,但值变成了null,这样查不到数据,
正确的应该是当获取的值为空时,where条件就应该不存在了,就是搜索全部的信息了,
请问这个什么原因呢?
...全文
119 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
friends571 2015-09-19
  • 打赏
  • 举报
回复
嗯,确实是一个BUG,我用循环把这个去掉了,但代码太多,用这个函数方便 多了
xuzuning 2015-09-19
  • 打赏
  • 举报
回复
从不用 thinkphp,不过不止一次见到类似的问题,估计是他的一个 bug 如果没有能力修改他的代码,可以先预处理一下
$map['id'] = I('get.id');
$map['cid'] = i('get.cid');
$map = array_diff($map, array('')); //过滤掉空元素
$m->where($map)->find();

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧