用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1487|回复: 2
收起左侧

[版本 2.x] 表单验证之unique

[复制链接]
发表于 2016-6-3 10:02:45 | 显示全部楼层 |阅读模式
ci的那个表单验证unique,在插入时是好使的,但是在编辑的时候,它总是提示 field must contain a unique value,这不合理啊,编辑的时候肯定是存在这条记录啊,怎么办
发表于 2016-6-3 10:11:40 | 显示全部楼层
也許是用法錯了 ? 他被判斷成新增了 ?
需要你提供編輯時用的「控制器」與「視圖」才能進一步檢視
 楼主| 发表于 2016-6-3 10:36:15 | 显示全部楼层
本帖最后由 Closer 于 2016-6-3 13:37 编辑
Closer 发表于 2016-6-3 10:11
也許是用法錯了 ? 他被判斷成新增了 ?
需要你提供編輯時用的「控制器」與「視圖」才能進一步檢視 ...
PHP复制代码
 
public function is_unique($str, $field)
        {
//                list($table, $field)=explode('.', $field);
//                $query = $this->CI->db->limit(1)->get_where($table, array($field => $str));
//                
//                return $query->num_rows() === 0;
            sscanf($field, '%[^.].%[^.]', $table, $field);
            $result = $this->CI->db->query("desc $table")->result_array();
            foreach ($result as $v) {
                if ($v['Key'] == 'PRI') {
                    $pk = $v['Field'];
                    break;
                }
            }
            $pk_value = $this->CI->input->post($pk);
            return isset($this->CI->db) ? ($this->CI->db->limit(1)->where(array($field => $str, $pk . ' !=' => $pk_value))->get($table)->num_rows() === 0) : FALSE;
        }
 
复制代码

应该修改ci框架的is_unique方法,它这个有问题,上面是网上查到的解决方法,我试过了,好使

本版积分规则