数据库没有读取当前会话

时间:2015-07-21 18:15:51

标签: php mysql session

我有以下代码和数据库表,它们在某一点上完美地结合在一起。如果用户在我的网站上,则数据库将显示这些用户。

我将会话类与我网站的每个页面上都需要的ini文件联合起来,因此会话始终在运行。

我在我的另一个网站上有相同的代码,这是我带来代码的地方,但有一次用户在它上面,似乎数据库表冻结,直到今天,它仍然显示用户进行会话,但如果我继续进行会话,则不会显示。

有没有人在下面看到任何可能出错的内容?

CREATE TABLE `groups` (
 `id` int(11) NOT NULL,
 `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
 `permissions` text COLLATE utf8_unicode_ci NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

会话课

class Session {
public static function exists($name) {
    return (isset($_SESSION[$name])) ? true : false;
}
public static function put($name, $value) {
    return $_SESSION[$name] = $value;
}
public static function get($name) {
    return $_SESSION[$name];
}
public static function delete($name) {
    if(self::exists($name)) {
        unset($_SESSION[$name]);
    }
}

public static function flash($name, $string = '') {
    if(self::exists($name)) {
        $session = self::get($name);
        self::delete($name);
        return $session;
    } else {
        self::put($name, $string);
    }
}
}

这是我的db类的一部分..

public function action($action, $table, $where = array()){
    if(count($where) === 3){
        $operators = array('=', '>', '<', '>=', '<=');

        $field      = $where[0];
        $operator   = $where[1];
        $value      = $where[2];

        if(in_array($operator, $operators)) {
            $sql = "{$action} FROM {$table} WHERE {$field} {$operator} ?";
            if(!$this->query($sql, array($value))->error()) {
                return $this;
            }
        }
    }
    return false;
}
public function get($table, $where){
    return $this->action('SELECT *', $table, $where);
}
public function delete($table, $where){
    return $this->action('DELETE', $table, $where);
}
public function insert($table, $fields = array()) {
    $keys = array_keys($fields);
    $values = '';
    $x = 1;

    foreach($fields as $field) {
        $values .= '?';
        if($x < count($fields)) {
            $values .= ', ';
        }
        $x++;
    }

    $sql = "INSERT INTO {$table} (`" . implode('`, `', $keys) . "`) Values ({$values})";

    return ! $this-> query($sql, $fields)->error(); 
}
public function update($table, $id, $fields) {
    $set = '';
    $x = 1;

    foreach($fields as $name => $value) {
        $set .= "{$name} = ?";
        if($x < count($fields)) {
            $set .= ', ';
        }
        $x++;
    }

    $sql = "UPDATE {$table} SET {$set} WHERE id = {$id}";

    return ! $this-> query($sql, $fields)->error();
}
public function results() {
    return $this->_results;
}
public function first() {
    return $this->results()[0];
}
public function error() {
    return $this->_error;
}
public function errorMessage() { 
    return $this->_errmsg; 
}
public function count(){
    return $this->_count;
}

}

0 个答案:

没有答案