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]');
只需删除:
|是唯一的[用户.用户名]
美元在哪里?看起来它不见了…这个问题没有完整的信息。