a392318709 发表于 2016-6-3 10:02:45

表单验证之unique

ci的那个表单验证unique,在插入时是好使的,但是在编辑的时候,它总是提示 field must contain a unique value,这不合理啊,编辑的时候肯定是存在这条记录啊,怎么办

Closer 发表于 2016-6-3 10:11:40

也許是用法錯了 ? 他被判斷成新增了 ?
需要你提供編輯時用的「控制器」與「視圖」才能進一步檢視

a392318709 发表于 2016-6-3 10:36:15

本帖最后由 Closer 于 2016-6-3 13:37 编辑

Closer 发表于 2016-6-3 10:11
也許是用法錯了 ? 他被判斷成新增了 ?
需要你提供編輯時用的「控制器」與「視圖」才能進一步檢視 ...

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方法,它这个有问题,上面是网上查到的解决方法,我试过了,好使
页: [1]
查看完整版本: 表单验证之unique