因项目较老一直是一TP3系列的框架,没时间升级到TP5/6,就只能小版本升级一下,当升级到3.2.4时,系统出现了错误,提示数据库没有对应字段,可能是后期修改过数据库,删除或修改过字段,而代码没有进行修改,3.2.3时没有错误,经过排查,发现3.2.4 的 Model.class.php 文件被修改过,与3.2.3 对比 _parseOptions 方法删除了一些代码,只需在if语句后加上3.2.3 中对应的代码即可,添加完如下,
foreach ($options['where'] as $key => $val) {
$key = trim($key);
if (in_array($key, $fields, true)) {
if (is_scalar($val)) {
$this->_parseType($options['where'], $key);
}
}elseif(!is_numeric($key) && '_' != substr($key,0,1) && false === strpos($key,'.') && false === strpos($key,'(') && false === strpos($key,'|') && false === strpos($key,'&')){
if(!empty($this->options['strict'])){
E(L('_ERROR_QUERY_EXPRESS_').':['.$key.'=>'.$val.']');
}
unset($options['where'][$key]);
}
}
本文收集于网络,仅供技术交流使用,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容, 欢迎发送邮件至 admin@webse.cn 举报,一经查实,本站将立刻删除涉嫌侵权内容,本文链接:https://webse.cn/16082.html
评论列表(1条)
另一点就是,tp3.2.4版本Mysql.class.php 增加了字段和表名的处理 ,parseKey方法中,增加后count()方法会出错,因为他给count(*),变成了count(`*`),以至于查询时提示找不到字段