query聚合函数正则需改进

浏览:390 发布日期:2019/11/29
5.0.0 - 致命 - 未处理
由于程序所用版本为5.0.20后经业务需要更新至5.0.24版本,产生以下错误:[0] Exception in Query.php line 574
not support data:goods_id,batch_no
后经排查发现以下代码正则表达式中缺少“\,”。
修改前:public function aggregate($aggregate, $field, $force = false)
    {
        if (0 === stripos($field, 'DISTINCT ')) {
            list($distinct, $field) = explode(' ', $field);
        }

        if (!preg_match('/^[\w\.\+\-\*]+$/', $field)) {
            throw new Exception('not support data:' . $field);
        }

        $result = $this->value($aggregate . '(' . (!empty($distinct) ? 'DISTINCT ' : '') . $field . ') AS tp_' . strtolower($aggregate), 0, $force);

        return $result;
    }
修改后:public function aggregate($aggregate, $field, $force = false)
    {
        if (0 === stripos($field, 'DISTINCT ')) {
            list($distinct, $field) = explode(' ', $field);
        }

        if (!preg_match('/^[\w\.\+\-\,\*]+$/', $field)) {
            throw new Exception('not support data:' . $field);
        }

        $result = $this->value($aggregate . '(' . (!empty($distinct) ? 'DISTINCT ' : '') . $field . ') AS tp_' . strtolower($aggregate), 0, $force);

        return $result;
    }
评论(
后面还有条评论,点击查看>>