我目前使用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
打印'query'通過使用'$ this-> output-> enable_profiler(TRUE);'並嘗試在數據庫控制檯中運行該查詢。它將很容易調試。 – Kamran
@Kamran你是否想用'$ this-> output-> enable_profiler(TRUE)來改變返回值;'? –