2016-02-17 40 views
1

我目前使用Codeigniter 3.xx,我試圖使用會話檢查進行多級別登錄。我從另一個網站獲得了一些教程,但查詢時出現錯誤。 通過這種方式對於CONTROLER:Codeigniter數據庫錯誤:1064使用MySQL,也許一些會話配置錯誤

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Auth extends CI_Controller { 

    public function index() { 
     $this->load->view('login'); 
    } 

    public function cek_login() { 
     $data = array('nip' => $this->input->post('nip'), 
         'password' => $this->input->post('password') 
      ); 
     $this->load->model('user_m'); 
     $hasil = $this->user_m->cek_user($data); 
     if ($hasil->num_rows() == 1) { 
      foreach ($hasil->result() as $sess) { 
       $sess_data['logged_in'] = 'Sudah Loggin'; 
       $sess_data['nip'] = $sess->nip; 
       $sess_data['akses'] = $sess->akses; 
       $this->session->set_userdata($sess_data); 
      } 
      if ($this->session->userdata('akses')=='admin') { 
       redirect('admin'); 
      } 
      elseif ($this->session->userdata('akses')=='member') { 
       redirect('user'); 
      }  
     } 
     else { 
      echo "<script>alert('Gagal login: Cek username, password!');history.go(-1);</script>"; 
     } 
    } 

} 

?> 

這是模型控制器:

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

    class User_m extends CI_Model { 

     public function cek_user($data) { 
      $query = $this->db->get_where(`pegawai`, $data); 
      return $query; 
     } 

    } 

?> 

然後我得到這個錯誤:

錯誤編號:1064 你有你的SQL語法錯誤; 'WHERE nip ='21212121'AND password ='user''at line 2 SELECT * WHERE nip ='21212121'AND password ='user' 在您的MariaDB服務器版本對應的手冊中選擇正確的語法文件名:C:/xampp/htdocs/simpeg/application/models/User_m.php 行號:7

,我知道我不使用MariaDB的引擎此表,並應在記錄的東西作爲用戶,如果運行正常。 任何人都可以解釋這個語法有什麼問題嗎? 通過我使用最新的XAMPP的PHP 7和笨在這個項目

UPDATE 後,我嘗試了一些代碼的方式,我覺得我有一些問題與會話配置。 這是我對會議的config.php:

$config['sess_driver'] = 'files'; 
$config['sess_cookie_name'] = 'ci_session'; 
$config['sess_expiration'] = 7200; 
$config['sess_save_path'] = NULL; 
$config['sess_match_ip'] = FALSE; 
$config['sess_time_to_update'] = 300; 
$config['sess_regenerate_destroy'] = FALSE; 

而且這是我在session.php文件配置在系統文件夾:

class CI_Session { 

    var $sess_encrypt_cookie  = FALSE; 
    var $sess_use_database   = FALSE; 
    var $sess_table_name   = ''; 
    var $sess_expiration   = 7200; 
    var $sess_expire_on_close  = FALSE; 
    var $sess_match_ip    = FALSE; 
    var $sess_match_useragent  = TRUE; 
    var $sess_cookie_name   = 'ci_session'; 
    var $cookie_prefix    = ''; 
    var $cookie_path    = ''; 
    var $cookie_domain    = ''; 
    var $cookie_secure    = FALSE; 
    var $sess_time_to_update  = 300; 
    var $encryption_key    = ''; 
    var $flashdata_key    = 'flash'; 
    var $time_reference    = 'time'; 
    var $gc_probability    = 5; 
    var $userdata     = array(); 
    var $CI; 
    var $now; 

CI中的新版本(我用的是哪一個),每當我嘗試自動加載會話時,總會要求我爲該會話添加一些加密密鑰,因此在將加密密鑰放入有關會話的查詢中時會出現如下錯誤: 錯誤號:1064 您的錯誤SQL語法; '檢查對應於您的MariaDB服務器版本的手冊,查看'SET last_activity = 1455761673,user_data ='a:2:{s:9:\「user_data \」; s:0:\「\」'在第1行 更新設置last_activity = 1455761673,user_data ='a:2:{s:9:\「user_data \」; s:0:\「\」; s:3:\「nip \」; s:10 :\ 「1234567890 \」;}」 WHERE session_id = '316bdf2f67b16beafbe30b56bca3833d' 文件名:庫/ session.php文件 行號:306

+0

打印'query'通過使用'$ this-> output-> enable_profiler(TRUE);'並嘗試在數據庫控制檯中運行該查詢。它將很容易調試。 – Kamran

+0

@Kamran你是否想用'$ this-> output-> enable_profiler(TRUE)來改變返回值;'? –

回答

0

我很抱歉,但是,我已經找到了答案我的問題...... 後,我試圖重新下載最新的笨,而在我的項目替換它,並重新配置我的項目中,結果我的查詢被讀取併成功執行,但會話沒有。所以我試圖調試我的代碼2天,我發現(僅僅大約15分鐘前)我的控制器中有一些管理員/用戶奇怪,沒有<?php defined('BASEPATH') OR exit('No direct script access allowed');,而是<?php session_start();,所以我改變了它並解決了問題。哦,如果有人發現

庫/ session.php文件

刪除它!

那是,我有這個錯誤的第一個原因

錯誤編號:1064您的SQL語法錯誤;請檢查 手冊,該手冊對應於您的MariaDB服務器版本的右邊 語法,以便在'WHERE nip ='21212121'和密碼='user''處使用 第2行SELECT * WHERE nip ='21212121'AND password ='user 「文件名: C:/xampp/htdocs/simpeg/application/models/User_m.php行號:7

感謝大家誰幫我...:d

0

變化從

$query = $this->db->get_where(`pegawai`, $data); 
return $query; 

$this->db->where($data); 
$query=$this->db->get('pegawai'); 
return $query; 
+0

對不起,但還有另一個錯誤: **錯誤號:1064 您的SQL語法錯誤;檢查對應於你的MariaDB服務器版本的手冊,在'SET'last_activity' = 1455757641,'user_data' ='a:4:{s:9:\「user_data \」; s:0:\ '''在第1行 UPDATE SET'last_activity' = 1455757641,'user_data' ='a:4:{s:9:\「user_data \」; s:0:\「\」; s:9: \「logged_in \」; s:12:\「Sudah Loggin \」; s:3:\「nip \」; s:10:\「1234567890 \」; s:5:\「akses \」; s:5 :\ 「管理員\」;}」 WHERE'session_id' = 'f4f0eae180cfca66af04e6cd2dbb2f5a' 文件名:庫/ session.php文件 行號:306 ** –

+0

在此之前,有一個錯誤,因爲我沒有爲關鍵加密會話,但在我做鑰匙後,有這樣的錯誤 –

+0

我使用反向調用pegawai表,並有另一個錯誤,就像第一個... 它真的,我有一個會話中的錯誤? –