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!
*/
你的会话路径不对!
我目前正在使用 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!
*/
你的会话路径不对!