2014-12-03 6 views
0

Я новичок с codeigniter, поэтому это похоже на глупый вопрос, но я все время искал. Я создал страницу регистрации и регистрации учетной записи, используя codeigniter. После отправки формы, я получаю это:Где найти таблицу в кодеигниторе?

Error Number: 1146 

Table 'users.user' doesn't exist 

INSERT INTO `user` (`email`, `firstname`, `lastname`, `username`, `password`, `hint`) VALUES ('blah', 'blah', 'blah', 'blah', 'fa348efcd3bb1a1fc6ba5c2c912cf402', 'Brown') 

Filename: F:\htdocs\system\database\DB_driver.php 

Line Number: 330 

Проблема заключается в том, что таблица называется «пользователи» не пользователь. Мой вопрос заключается в том, как найти имя таблицы, чтобы я мог изменить ее на «пользователей» вместо «Пользователь».

Вот контроллер:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
    class User extends CI_Controller{ 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->model('user_model'); 
    } 
    public function index() 
    { 
     if(($this->session->userdata('username')!="")) 
     { 
     $this->welcome(); 
     } 
     else{ 
     $data['title']= 'Home'; 
     $this->load->view('header_view',$data); 
     $this->load->view("registration_view.php", $data); 
     $this->load->view('footer_view',$data); 
     } 
    } 
    public function welcome() 
    { 
     $data['title']= 'Welcome'; 
     $this->load->view('header_view',$data); 
     $this->load->view('welcome_view.php', $data); 
     $this->load->view('footer_view',$data); 
    } 
    public function login() 
    { 
     $email=$this->input->post('email'); 
     $password=md5($this->input->post('pass')); 

     $result=$this->user_model->login($email,$password); 
     if($result) $this->welcome(); 
     else  $this->index(); 
    } 
    public function thank() 
    { 
     $data['title']= 'Thank'; 
     $this->load->view('header_view',$data); 
     $this->load->view('thank_view.php', $data); 
     $this->load->view('footer_view',$data); 
    } 
    public function registration() 
    { 
     $this->load->library('form_validation'); 
     // field name, error message, validation rules 
     $this->form_validation->set_rules('username', 'User Name', 'trim|required|min_length[4]|xss_clean'); 
     $this->form_validation->set_rules('email', 'Your Email', 'trim|required|valid_email'); 
     $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[4]|max_length[32]'); 
     $this->form_validation->set_rules('firstname', 'First Name', 'trim|required|min_length[3]|max_length[32]'); 
     $this->form_validation->set_rules('lastname', 'Last Name', 'trim|required|min_length[2]|max_length[32]'); 
     $this->form_validation->set_rules('hint', 'hint', 'trim|required|min_length[2]|max_length[32]'); 
     if($this->form_validation->run() == FALSE) 
     { 
     $this->index(); 
     } 
     else 
     { 
     $this->user_model->add_user(); 
     $this->thank(); 
     } 
    } 
    public function logout() 
    { 
     $newdata = array(
     'user_id' =>'', 
     'username' =>'', 
     'user_email'  => '', 
     'logged_in' => FALSE, 
    ); 
     $this->session->unset_userdata($newdata); 
     $this->session->sess_destroy(); 
     $this->index(); 
    } 
    } 
    ?> 

Модель:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
class User_model extends CI_Model { 
public function __construct() 
{ 
    parent::__construct(); 
} 
function login($email,$password) 
{ 
    $this->db->where("email",$email); 
    $this->db->where("password",$password); 

    $query=$this->db->get("users"); 
    if($query->num_rows()>0) 
    { 
    foreach($query->result() as $rows) 
    { 
    //add all data to session 
    $newdata = array(
     'user_id' => $rows->id, 
     'user_name' => $rows->username, 
     'user_email' => $rows->email, 
     'logged_in' => TRUE, 
    ); 
    } 
    $this->session->set_userdata($newdata); 
    return true; 
    } 
    return false; 
} 
public function add_user() 
{ 
    $data=array(
    'email'=>$this->input->post('email'), 
    'firstname'=>$this->input->post('firstname'), 
    'lastname'=>$this->input->post('lastname'), 
    'username'=>$this->input->post('username'), 
    'password'=>md5($this->input->post('password')), 
    'hint'=>$this->input->post('hint') 
); 
    $this->db->insert('user',$data); 
} 
} 
?> 

ответ

2

Ваш метод вставки пытается вставить в таблицу user. Изменение user в users

public function add_user() 
{ 
    $data=array(
    'email'=>$this->input->post('email'), 
    'firstname'=>$this->input->post('firstname'), 
    'lastname'=>$this->input->post('lastname'), 
    'username'=>$this->input->post('username'), 
    'password'=>md5($this->input->post('password')), 
    'hint'=>$this->input->post('hint') 
); 

    $this->db->insert('user',$data); 
} 
+0

Спасибо. Этот работал для меня. – Lewis

+0

Рассмотрите возможность выбора в качестве ответа. Благодаря! @macinnir –

+0

Счастливые помочь @MikelBitson. В стороне, убедитесь, что вы правильно проверяете данные перед их вставкой. См. [CI Input] (https://ellislab.com/codeigniter/user-guide/libraries/input.html) об фильтрации XSS и [CI Security Class] (https://ellislab.com/codeigniter/user-guide /libraries/security.html) – macinnir

0

Ваш код, написанный

$ запрос = $ this-> db-> Get ("пользователи") ;

изменение пользователя


* Вы должны узнать о the writting style КИ.

+0

Я ищу, чтобы установить имя базы данных «пользователей», а не «пользователь». Это решение не сработало для меня. – Lewis

+4

@Lewis ahhh просто измените $ this-> db-> insert ('user', $ data); в $ this-> db-> insert ('users', $ data); –