我正在尝试创建一个登录功能,同时学习CodeIgniter。我已经验证了用户名和密码是否正确。密码使用Phppass codeigniter密码库加密。
这是我用正确的信息登录后得到的错误。
数据库出错
错误编号:1064
你的SQL语法有错误;查看手册对应于MySQL服务器版本,以便使用正确的语法
附近
'(`session_id`, `ip_address`, `user_agent`, `last_activity`)
VALUES ('826f937fed9' at line 1
INSERT INTO (`session_id`, `ip_address`, `user_agent`,
`last_activity`) VALUES ('826f937fed9185e2c121ec06b1b44b6a', '::1',
'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/53', 1442454002)
文件名:库/Session.php
行号:327
正如Jarred Farrish和Darack在PHP聊天室指出的那样,错误就在我面前!我忘记在配置中添加CodeIgniter数据库表名了!嗯,不完全是。我以为我正确地遵循了CodeIgniter配置的说明,但显然不是!由于文档略有不同,实际上必须ADD
$config['sess_table_name'] = 'ci_sessions';
到config.php文件。一旦添加了该表,CodeIgniter将正确地将用户数据存储在所提供的表名中。
注意: Session类有内置的垃圾收集,它会清除过期的会话,所以你不需要自己编写例程来做这件事。
表示不需要手动插入。它将自动执行。
在config/config.php
中改变这个
$config['sess_use_database'] = FALSE;
$config['sess_use_database'] = TRUE;
和会话表应该是
CREATE TABLE IF NOT EXISTS `ci_sessions` (
session_id varchar(40) DEFAULT '0' NOT NULL,
ip_address varchar(45) DEFAULT '0' NOT NULL,
user_agent varchar(120) NOT NULL,
last_activity int(10) unsigned DEFAULT 0 NOT NULL,
user_data text NOT NULL,
PRIMARY KEY (session_id),
KEY `last_activity_idx` (`last_activity`)
);
check Session table name is
$config['sess_table_name'] = 'ci_sessions';