Php Codeigniter未将用户添加到数据库
我试图向我的数据库中添加一个用户,该用户只有Php Codeigniter未将用户添加到数据库,php,database,codeigniter,Php,Database,Codeigniter,我试图向我的数据库中添加一个用户,该用户只有名,姓,用户名,电子邮件,和密码,并且它可以工作 但是,当我尝试添加一个具有其他值的用户时,比如$IP之类的值,它就不起作用了。它只是说 “发生数据库错误” 我在model\u user.php中的代码 public function insert_user() { $first_name = $this->input->post('first_name'); $last_name = $this->input-&g
名
,姓
,用户名
,电子邮件
,和密码
,并且它可以工作
但是,当我尝试添加一个具有其他值的用户时,比如$IP
之类的值,它就不起作用了。它只是说
“发生数据库错误”
我在model\u user.php中的代码
public function insert_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 = $this->input->post('password');
$IP = "2";
$total_entry = 1;
$average_entry = 1;
$date_of_registration = date("Y-m-d H:i:s");
$lastactive = date("Y-m-d H:i:s");
$user_level = 2;
$account_state = "Active";
//insert data into database. SQL Injection bypass
$sql = "INSERT INTO users (first_name, last_name, username, email, password, IP, total_entry, average_entry, date_of_registration, lastactive, user_level, account_state )
VALUES (" . $this->db->escape($first_name) . ",
" . $this->db->escape($last_name) . ",
" . $this->db->escape($username) . ",
'" . $email . "',
'" . $password . "'
'" . $IP . "'
'" . $total_entry . "'
'" . $average_entry . "'
'" . $date_of_registration . "'
'" . $lastactive . "'
'" . $user_level . "'
'" . $account_state . "')";
$result = $this->db->query($sql);
上面的代码根本不起作用。然而,当我评论一些事情时,它是有效的。在注释了以下几点之后,此代码可以正常工作:
//insert data into database. SQL Injection bypass
$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 . "')";
/* '" . $IP . "'
'" . $total_entry . "'
'" . $average_entry . "'
'" . $date_of_registration . "'
'" . $lastactive . "'
'" . $user_level . "'
'" . $account_state . "')"; */
使用上述代码,用户将成功注册。我不知道我做错了什么。为什么不使用active record?你将大大降低出错的风险
$data = array(
'first_name' => $first_name ,
'last_name' => $last_name ,
'username' => $username,
'email' => $email,
'password' => $password,
'IP' => $IP,
'total_entry' => $total_entry,
'average_entry' => $average_entry,
'date_of_registration' => $date_of_registration,
'lastactive' => $lastactive,
'user_level' => $user_level,
'account_state' => $account_state
);
$this->db->insert('tablename', $data);
另一方面,您应该将模型中的数据库调用与提交后的过程分开
控制器:
$data = array(
'first_name' => $this->input->post('first_name'),
/*other fields here */
);
$this->my_model->insert_user($data);
型号:
function insert_user($data)
{
$this->db->insert("table", $data);
}
此处的更多详细信息:出现此错误可能是因为您在属性“password”、“IP”、“total\u entry”等后缺少逗号。这解释了为什么在注释这些属性时代码会工作。在值后缺少一些逗号。在您的数据库中,IP是如何定义的?什么类型<代码>文本
,VARCHAR
@泰勒·维夫特:我同意阿德里安的观点。这就是为什么我们使用像Codeigniter这样的框架的一个巨大优势。你应该利用它。