正确的PHP会话垃圾收集语法?
我有一个自定义的GC会话方法集,可以从数据库中删除任何旧会话。以下是函数:正确的PHP会话垃圾收集语法?,php,mysql,session,garbage-collection,Php,Mysql,Session,Garbage Collection,我有一个自定义的GC会话方法集,可以从数据库中删除任何旧会话。以下是函数: 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 *
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;
}
但是,每当此函数运行时,我总是会遇到以下致命错误:
PHP致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在/Applications/MAMP/htdocs/demo/DB.php:66中第1行access<1482965344'的会话中使用的接近“*的正确语法
忍不住觉得我遗漏了一些琐碎的东西……有什么建议吗?你应该使用:
'DELETE FROM session WHERE access<:old'
作为您的DML字符串
删除
*
您的SQL查询错误。“删除”和“从”之间没有*号。只要用这句话:
$this->db->query('DELETE FROM session WHERE access < :old');
$this->db->query('DELETE FROM session WHERE access<:old');
在'*
附近使用正确的语法,它告诉您错误从哪里开始;您的查询无效。您在另一个问题DELETE FROM session
中使用了正确的语法,那么您现在为什么要执行DELETE*
?
$this->db->query('DELETE FROM session WHERE access < :old');