2014-12-10 2 views
0

Я получаю сообщение об ошибке проверки формы, а также ошибке db. Когда я удаляю проверку формы, запрос db работает отлично. Я понятия не имею, что такое ошибка и как ее решить.проверка формы, а также ошибка db

A PHP Error was encountered 

Severity: Notice 

Message: Undefined offset: 1 

Filename: libraries/Form_validation.php 

Line Number: 953 

A Database Error Occurred 

Error Number: 1064 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE ` = 'admin' LIMIT 1' at line 2 

SELECT * WHERE ` = 'admin' LIMIT 1 

Filename: C:\wamp\www\myblog.com\system\database\DB_driver.php 

Line Number: 330 

[Контроллер: MyBlog]

class Myblog extends CI_Controller { 

    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->model('blogmodel'); 

     } 


    public function login() 
    { 
     $this->load->view('header'); 
     $this->load->view('login'); 
     $this->load->view('footer'); 
    } 
    public function login_check() 
    { 
     $user=$this->input->post("username"); 
     $pass=$this->input->post("password"); 
     $this->form_validation->set_rules('username', 'Username', 'trim|required|is_unique'); 
     $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[4]|max_length[32]'); 
     if($this->form_validation->run()==true) 
     { 
      $this->blogmodel->checklogin($user,$pass); 
      $this->load->view('header'); 
      $this->load->view('logsuccess'); 
      $this->load->view('footer'); 
     } 
     else 
     { 
     $this->load->view('header'); 
     $this->load->view('login'); 
     $this->load->view('footer'); 
     } 
    } 

    public function reg() 
    {  
     $this->form_validation->set_rules('username', 'Username', 'trim|required|is_unique'); 
     $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[4]|max_length[32]'); 
     if($this->form_validation->run()==true) 
     { 
      $user=$this->input->post("username"); 
      $pass=$this->input->post("password"); 
      $this->blogmodel->register($user,$pass); 
      $this->load->view('header'); 
      $this->load->view('regsuccess'); 
      $this->load->view('footer'); 
     } 

     else 
      { 
       redirect('myblog/login');   
    } 
} 





[Model: blogmodel] 

class Blogmodel extends CI_Model { 

    function __construct() { 
     parent::__construct(); 
    } 

    function checklogin($user,$pass) 
    { 
     $this->db->select('username, password'); 
     $this->db->from('user'); 
     $this->db->where('username', $user); 
     $this->db->where('password', MD5($pass)); 
     $this->db->limit(1); 

     $query = $this->db->get(); 
     if($query->num_rows() == 1) { 
      return $query->result(); 
     } else { 
      redirect('myblog/login'); 
     } 
    } 

    function register($user,$pass) 
    { 
      $new_member=array(
      'username' => $user, 
      'password' => md5($pass), 
      'status' =>1 
     ); 
     $insert = $this->db->insert('user', $new_member); 
     return $insert;  
    } 

[Вид: Войти]

echo "<h2>Register</h2>"; 
    echo validation_errors(); 
    echo form_open('myblog/reg'); 
    echo form_label("Username: "); 
    echo form_input("username"); 
    ?><br/> 
    <?php 
    echo form_label("Password:&nbsp;&nbsp;"); 
    echo form_password("password"); 
    ?><br/> 
    <?php 
    echo form_label("Confirm Password:&nbsp;&nbsp;"); 
    echo form_password("password2"); 
    ?><br/> 
    <?php 
    echo form_submit("","Register"); 
    echo form_close(); 


    echo "<h2>Login</h2>"; 
    echo validation_errors(); 
    echo form_open('myblog/login_check'); 
    echo form_label("Username: "); 
    echo form_input("username"); 
    ?><br/> 
    <?php 
    echo form_label("Password:&nbsp;&nbsp;"); 
    echo form_password("password"); 
    ?><br/> 
    <?php 
    echo form_submit("","Login"); 
    echo form_close(); 
+1

У вашего подтверждения формы имени должно быть имя таблицы в правиле is_unique. is_unique [users.username] – Craig

ответ

2

Я предполагаю, что вы не установили таблицу или строку в своей форме.

Измените эту строку в своем контроллере;

$this->form_validation->set_rules('username', 'Username', 'trim|required|is_unique'); 

к этому;

$this->form_validation->set_rules('username', 'Username', 'trim|required|is_unique[users.username]'); 

Как вы увидите, я добавил [users.username] в правило is_inque. Без этого CI не знает, с чем сравнивать.

+0

Большое спасибо Крейгу, это сработало. : D –

+0

Добро пожаловать. Можете ли вы принять ответ? – Craig

+0

Прошу прощения, я тебя не понимаю. Im новое для stckovrflw. Как принять ответ? –

0

SQL-Заявление отсутствует таблицу и столбец для проверки

SELECT * FROM table WHERE column = 'admin' LIMIT 1 
+0

Да, когда я удаляю проверку формы, она отлично работает. Я указал таблицу и все необходимые поля на моей модели. Но когда я применяю проверку формы, она показывает такую ​​ошибку db. –

+0

Угадайте, что нам нужно увидеть Form_validation.php и DB_driver.php, чтобы помочь некоторым более – Som1

+0

Это не пользовательские файлы, они являются файлами по умолчанию в CI. Не могли бы вы пройти через reg() func в myblog controller и зарегистрировать() весело в blogmodel. Проблема, похоже, там. Спасибо. :) –

0

SQL синтаксис неверен. Ваш незавершенный оператор sql указывает, что вы хотите получить значение COLUMN VALUE из таблицы, которая содержит значения вашего имени пользователя. Укажите соответствующее имя столбца и имя таблицы, . Синтаксис:

Выберите * from table_name где column_name = 'admin' Limit 1;

Смежные вопросы