Почему я могу обнаружить недопустимого пользователя и пароль, но когда я использую действительный, я получаю ошибку?

#php #codeigniter #frameworks

#php #codeigniter #фреймворки

Вопрос:

Это моя ошибка

Произошла ошибка базы данных

Номер ошибки: 1064

У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы найти правильный синтаксис для использования рядом с ‘SET `last_activity` = 1475713773, `user_data` = ‘a: 2:{s: 9: «user_data «; s: 0: «»‘ в строке 1

ОБНОВЛЕНИЕ УСТАНОВИЛО `last_activity` = 1475713773, `user_data` = ‘a: 2: {s: 9: «user_data «; s: 0: «»; s: 6: «userId «; s:1:»1»;}’ ГДЕ`session_id` = ‘738744d19c2e9e582af4afb59826e331’

Имя файла: C:/xampp/htdocs/CI3/system/database/DB_driver.php

Номер строки: 691

Это мой контроллер:

 function login(){
    $data['error']=0;
    if($_POST){
        $this->load->model('user');
        $username=$this->input->post('username',true);
        $password=$this->input->post('password',true);
        $user=$this->user->login($username,$password);
        if(!$user){
            $data['error']=1;
        } else {
            $this->session->set_userdata('userID',$user['userID']);
            //$this->session->set_userdata('user_type',$user['user_type']);
            redirect(base_url().'posts');
        }
    }

    $this->load->view('header');
    $this->load->view('login',$data);
    $this->load->view('footer'); 
}
  

Это моя модель:

 function login($username,$password){
    $where=array(
        'username'=>$username,
        'password'=>$password
        );
    $this->db->select()->from('users')->where($where);
    $query=$this->db->get();
    return $query->row_array('array');
}
  

Моя проблема в том, что я могу обнаружить недопустимые имя пользователя и пароль, но если я использую действительные имя пользователя и пароль, я получаю указанную выше ошибку.

Ответ №1:

Заметил несколько ошибок в вашем коде. Пересмотрите свою модель как ( select() и row_array() проблему)

 function login($username,$password){
    $where = array(
        'username'=>$username,
        'password'=>$password
        );
    $this->db->select('*')->from('users')->where($where);
    $query=$this->db->get();
    return $query->row_array();
}
  

Наконец, убедитесь, что ваша таблица `ci_sessions’ создана как

 CREATE TABLE IF NOT EXISTS `ci_sessions` (
        `id` varchar(40) NOT NULL,
        `ip_address` varchar(45) NOT NULL,
        `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
        `data` blob NOT NULL,
        KEY `ci_sessions_timestamp` (`timestamp`)
);
  

смотрите, это не session_id совсем id

Комментарии:

1. та же ошибка, что и в моей таблице пользователей Идентификатор пользователя email имя пользователя пароль user_type

2. Я говорю, что у вас есть столбец с именем session_id в ci_sessions таблице, это имя столбца должно быть id

3. youtube.com/watch?v=wW7jPRiDs4A я слежу за этим. итак, я не знал, где я могу редактировать