【发布时间】:2015-02-16 21:15:59
【问题描述】:
我尝试仅使用 first_name、last_name、username、email 和 password 将用户添加到我的数据库中,并且成功了。
但是,当我尝试添加具有其他值的用户时,例如 $IP 之类的,它不起作用。它只是说
“发生数据库错误”
我的代码在model_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 . "')"; */
使用上面的代码,用户注册成功。我不知道我做错了什么。
【问题讨论】:
-
这些值后面缺少一些逗号。
-
在你的数据库中,IP是如何定义的?哪种类型?
TEXT,VARCHAR... ?
标签: php database codeigniter