TP2.1SVN版本WHERE与COUNT的BUG

浏览:689 发布日期:2011/10/31
- 普通 - 未处理
[i=s] 本帖最后由 deeka 于 2011-10-31 12:10 编辑 [/i]

例子: $model = D('News');
$map['day'] = date('Ymd');

$count = $model->where($map)->count();
echo $model->getLastSql();
// SELECT COUNT(*) AS `tp_count` FROM `test_news` WHERE `day`='';

$rows = $modl->where($map)->select();
echo $model->getLastSql();
// SELECT * FROM `test_news` WHERE `day`='20111031';
?>
用的是同一个$map参数,居然生成的SQL参数不一样。

经调试....(此处省略调试过程的1万字)。

Db\Driver\DbMysql.class.php
第 410 行:
插入dump($this->_linkID);
你会发现在count()操作那段调试的结果是NULL。正因为这个原因,导致了返回的$str为空,一层层的向上影响到了where条件。

修正方案:
return mysql_real_escape_string($str,$this->_linkID);
改为:
return mysql_real_escape_string($str);

至于什么原因导致这个问题,还没深入的考究。但流年大哥本地调试无法重现,怀疑跟php版本有关。
评论(
后面还有条评论,点击查看>>