无符号数据insert的bug

浏览:635 发布日期:2015/11/06
3.2.3 - 普通 - 未处理
数据库中 ip 字段的类型为 int unsigned
尝试将一个大于PHP_INT_MAX的整数存入ip字段
结果总是存入2147483647

查看Model类,代码如下protected function _parseType(&$data,$key) {
        if(!isset($this->options['bind'][':'.$key]) && isset($this->fields['_type'][$key])){
            $fieldType = strtolower($this->fields['_type'][$key]);
            if(false !== strpos($fieldType,'enum')){
                // 支持ENUM类型优先检测
            }elseif(false === strpos($fieldType,'bigint') && false !== strpos($fieldType,'int')) {
                $data[$key]   =  intval($data[$key]);
            }elseif(false !== strpos($fieldType,'float') || false !== strpos($fieldType,'double')){
                $data[$key]   =  floatval($data[$key]);
            }elseif(false !== strpos($fieldType,'bool')){
                $data[$key]   =  (bool)$data[$key];
            }
        }
    }
似乎并没有考虑无符号的情况
评论(
后面还有条评论,点击查看>>