Php 表单提交错误

Php 表单提交错误,php,codeigniter,Php,Codeigniter,我有一个控制器,如下图所示,用于注册,但每次提交表单时,我都会看到此错误: A PHP Error was encountered Severity: Notice Message: Undefined property: Welcome::$db Filename: libraries/Form_validation.php Line Number: 954 我的控制器如下所示: class Welcome extends CI_Controller { public

我有一个控制器,如下图所示,用于注册,但每次提交表单时,我都会看到此错误:

 A PHP Error was encountered

Severity: Notice

Message: Undefined property: Welcome::$db

Filename: libraries/Form_validation.php

Line Number: 954
我的控制器如下所示:

class Welcome extends CI_Controller {


    public function index()
    {
        $this->load->view('welcome_message');


    }

    public function sign_up(){
        $this->load->helper('form');
        $this->load->library('form_validation');

        $this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[12]|is_unique[users.username]');
        $this->form_validation->set_rules('password', 'Password', 'required|matches[passconf]');
        $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
        $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');

        if ($this->form_validation->run() == FALSE)
        {
            $this->load->view('welcome_message');
        }
        else
        {
            $this->load->view('formsuccess');
        }

    }
}

您是否在
/application/config/database.php
中配置了数据库参数?否则,您将无法通过验证,因为您已将
是唯一的[users.username]
规则添加到username参数中

我不确定在调用
is_unique
参数之前是否必须显式加载数据库类,因为我总是自动加载该类,但我怀疑您应该这样做

编辑

挖掘系统文件
system/libraries/Form_validation.php
第954行有以下内容:

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;

这表示CI实例正在查找数据库参数以进行检查,但表单验证库不会加载数据库类本身,因此您应该自己将其加载到控制器中,或者将其设置为自动加载

只需替换用户名规则:

    $this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[12]|is_unique[users.username]');
根据这条规则:

$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[12]');
只需删除:

|是唯一的[用户.用户名]


美元在哪里?看起来它不见了…这个问题没有完整的信息。