CodeIgniter:我在提交注册表时出现此数据库错误 1048。
Posted
技术标签:
【中文标题】CodeIgniter:我在提交注册表时出现此数据库错误 1048。【英文标题】:CodeIgniter: I am occurring this database error 1048 on submitting registration form. 【发布时间】:2017-03-08 00:48:44 【问题描述】:我在提交注册表时在本地主机上发出此数据库错误,同时将用户值插入数据库。
发生数据库错误 错误号:1048 列“first_name”不能为空 插入用户(名字,姓氏,用户名,电子邮件,密码)值(NULL,NULL,NULL,'','d41d8cd98f00b204e9800998ecf8427e')
这是我的代码(应用程序/模型/模型用户)
<?php
class Model_users extends CI_Model
public function can_log_in()
$this->db->where('email', $this->input->post('email'));
$this->db->where('password', md5($this->input->post('password')));
$query = $this->db->get('users');
if($query->num_rows() == 1)
return TRUE;
else
return FALSE;
public function add_user()
$first_name = $this->input->post('first_name');
$last_name = $this->input->post('last_name');
$username = $this->input->post('username');
$email = $this->input->post('email');
$password = md5($this->input->post('password'));
$sql = "INSERT INTO users(first_name, last_name, username, email, password)
VALUES( " .$this->db->escape($first_name). ",
" .$this->db->escape($last_name). ",
" .$this->db->escape($username). ",
'".$email."',
'".$password."')";
$query = $this->db->query($sql);
if($query)
return TRUE;
else
return FALSE;
?>
我也尝试过这个插入查询,但同样的数据库错误
$new_members = array(
'first_name' => $this->input->post('first_name'),
'last_name' => $this->input->post('last_name'),
'username' => $this->input->post('username'),
'email' => $this->input->post('email'),
'password' => md5($this->input->post('password'))
);
$insert = $this->db->insert('users', $new_members);
if($insert)
return TRUE;
else
return FALSE;
这是控制器文件(应用程序/控制器/主)。此文件中没有此类错误,表单验证也可以正常工作。
<?php
class Main extends CI_Controller
public function index()
$this->login();
public function login()
$this->load->view('login');
public function signup()
$this->load->view('signup');
public function members()
if($this->session->userdata('is_logged_in'))
$this->load->view('members');
else
redirect('main/restricted');
public function restricted()
$this->load->view('restricted');
public function login_validation()
$this->load->helper('security');
$this->load->library('form_validation');
$this->form_validation->set_rules('email','Email','required|trim|xss_clean|callback_validate_credentials');
$this->form_validation->set_rules('password','Password','required|md5|trim');
if($this->form_validation->run())
$data = array(
'email' => $this->input->post('email'),
'is_logged_in' => 1
);
$this->session->set_userdata($data);
redirect('main/members');
else
$this->load->view('login');
public function signup_validation()
$this->load->helper('security');
$this->load->library('form_validation');
$this->form_validation->set_rules('first_name','First Name','required');
$this->form_validation->set_rules('last_name','Last Name','required');
$this->form_validation->set_rules('email','Email','required|trim|valid_email|is_unique[users.email]');
$this->form_validation->set_rules('username','Username','required|trim|is_unique[users.username]');
$this->form_validation->set_rules('password','Password','required|trim');
$this->form_validation->set_rules('cpassword','Confirm Password','required|trim|matches[password]');
$this->form_validation->set_message('is_unique','That email address already exist!');
if($this->form_validation->run())
//echo 'Validation Successful.';
redirect('main/add_user');
else
//Validation failed
$this->load->view('signup');
public function add_user()
$this->load->model('model_users');
$result = $this->model_users->add_user();
if($result)
$this->load->view('success');
else //this should never happen
echo 'Sorry, there is a problem with a site. Please try again!' ;
public function validate_credentials()
$this->load->model('model_users');
if($this->model_users->can_log_in())
return TRUE;
else
$this->form_validation->set_message('validate_credentials','Sorry incorrect Email ID or Password');
return FALSE ;
public function logout()
$this->session->sess_destroy();
redirect('main/login');
?>
【问题讨论】:
当你使用redirect('main/add_user');
输入数据时模型无法识别
您正在传递空值,这就是它的意思。你有没有放任何主键?例如:电子邮件、手机?如果是这样,请不要传递 null,尝试传递一些实际值。
@HardikPatil 检查以下答案
@AbdullaNilam 非常感谢。它的工作! :D
@AbdullaNilam 还有一件事,现在数据库中的值显示在单引号中,例如,对于列(用户名、电子邮件、名字...),值以这种方式显示 | 'markS1' | 'mark@test.com' | '马克'
【参考方案1】:
试试这个
在控制器中
public function signup_validation()
$this->load->helper('security');
$this->load->library('form_validation');
$this->form_validation->set_rules('first_name','First Name','required');
$this->form_validation->set_rules('last_name','Last Name','required');
$this->form_validation->set_rules('email','Email','required|trim|valid_email|is_unique[users.email]');
$this->form_validation->set_rules('username','Username','required|trim|is_unique[users.username]');
$this->form_validation->set_rules('password','Password','required|trim');
$this->form_validation->set_rules('cpassword','Confirm Password','required|trim|matches[password]');
$this->form_validation->set_message('is_unique','That email address already exist!');
if($this->form_validation->run())
$this->load->model('model_users');
$result = $this->model_users->add_user();
if($result == TRUE)
$this->load->view('success');
else
echo 'Sorry, there is a problem with a site. Please try again!' ;
else
//Validation failed
$this->load->view('signup');
在模型中
public function add_user()
$first_name = $this->input->post('first_name');
$last_name = $this->input->post('last_name');
$username = $this->input->post('username');
$email = $this->input->post('email');
$password = md5($this->input->post('password'));
$data = array(
'first_name' => $this->db->escape($first_name),
'last_name' => $this->db->escape($last_name),
'username' => $this->db->escape($username),
'email' => $this->db->escape($email),
'password' => $this->db->escape($password)
);
if(!$this->db->insert('users', $data))
return FALSE;
else
return TRUE;
【讨论】:
以上是关于CodeIgniter:我在提交注册表时出现此数据库错误 1048。的主要内容,如果未能解决你的问题,请参考以下文章
在 PHP,Codeigniter 中提交带有空字段的表单时出现一些错误
未定义的属性:stdClass::codeigniter 3 with php 5.3.6