我有一个自定义GC会话方法集,应该从我的数据库中删除任何旧会话。这是func:
public function gc($max){
// Calculate what is to be deemed old
date_default_timezone_set('America/Chicago');
$old = time() - $max;
// Set query
$this->db->query('DELETE * FROM session WHERE access < :old');
// Bind data
$this->db->bind(':old', $old);
// Attempt execution
if($this->db->execute()){
// Return True
return true;
}
// Return False
return false;
}
$ max var表示我的php.ini中的session.gc_maxlifetime
值。以下是我的.ini中的垃圾收集设置:
session.gc_probability = 1
session.gc_divisor = 100
session.gc_maxlifetime = 1440
但是无论何时运行此函数,我总会得到以下致命错误:
PHP致命错误:未捕获的异常&#39; PDOException&#39; with message&#39; SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,以便使用接近&#39; *来自会话的正确语法WHERE access&lt; 1482965344&#39;在第1行&#39;在/Applications/MAMP/htdocs/demo/DB.php:66
无法帮助但感觉我错过了一些微不足道的事情...有什么建议吗?
答案 0 :(得分:1)
您应该使用:
'DELETE FROM session WHERE access < :old'
作为您的DML字符串。
删除*
。
答案 1 :(得分:0)
您的SQL查询错误。 DELETE和FROM之间没有*。只需使用这一行:
$this->db->query('DELETE FROM session WHERE access < :old');