Codeigniter Database Error : 1064 Using MySQL and maybe some session config error

Codeigniter Database Error : 1064 Using MySQL and maybe some session config error

我目前正在使用 Codeigniter 3.xx 并尝试使用 session 检查进行多级登录。我从另一个网站得到了一些教程,但是查询有错误。 顺便说一句,这是给控制器的:

    <?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 语法有误;查看与您的 MariaDB 服务器版本对应的手册,了解在第 2 行的 'WHERE nip = '21212121' AND password = 'user'' 附近使用的正确语法 SELECT * 其中 nip = '21212121' 和 password = 'user' 文件名:C:/xampp/htdocs/simpeg/application/models/User_m.php 行号:7

据我所知,我没有为此 table 使用 MariaDB 引擎,如果 运行 正确,应该以用户身份登录。 任何人都可以解释这种语法有什么问题吗? 顺便说一句,我在这个项目

中使用 最新的 XAMPP for PHP 7 和 Codeigniter

更新 在我尝试了一些代码之后,我认为 session 配置有问题。 这是我的 config.php session:

$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;

在新版本的 Codeigniter(我使用的那个)中,每当我尝试自动加载 session 时,总会要求我为 session 输入一些加密密钥,所以在我输入加密密钥 在关于 session 的查询中出现错误,如下所示: 错误号:1064 您的 SQL 语法有误;查看与您的 MariaDB 服务器版本对应的手册,了解在第 1 行的 'SET last_activity = 1455761673, user_data = 'a:2:{s:9:\"user_data\";s:0:\"\"' 附近使用的正确语法 更新集 last_activity = 1455761673,user_data = 'a:2:{s:9:\"user_data\";s:0:\"\";s:3:\"nip\";s:10:\"1234567890\";}' 其中 session_id = '316bdf2f67b16beafbe30b56bca3833d' 文件名:libraries/Session.php 行号:306

变化自

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

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

抱歉,我已经找到问题的答案了... 在我尝试再次下载最新的 Codeigniter 并将其替换到我的项目中并重新配置我的项目后,结果我的查询被读取并成功执行,但会话没有。所以我尝试调试我的代码 2 天,我发现(大约 15 分钟前)我的控制器中有一些奇怪的东西 admin/user,没有 <?php defined('BASEPATH') OR exit('No direct script access allowed'); 而是 <?php session_start();所以我改变了它并解决了问题。哦,如果有人发现

libraries/Session.php

删除它!

这是我出现此错误的第一个原因

Error Number: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE nip = '21212121' AND password = 'user'' at line 2 SELECT * WHERE nip = '21212121' AND password = 'user' Filename: C:/xampp/htdocs/simpeg/application/models/User_m.php Line Number: 7

感谢所有帮助过我的人...:D

我知道这是一个老问题但仍然是正确的答案是你必须仔细阅读 config.php 文件并且你会明白你错过了配置的一些要点以正确的方式保存会话.

/* 'sess_save_path'
|
|   The location to save sessions to, driver dependent.
|
|   For the 'files' driver, it's a path to a writable directory.
|   WARNING: Only absolute paths are supported!
|
|   For the 'database' driver, it's a table name.
|   Please read up the manual for the format with other session drivers.
|
|   IMPORTANT: You are REQUIRED to set a valid save path!
*/

你的会话路径不对!