디폴트가 아닌 데이터베이스에 세션 데이터를 저장하는 스크립트를 수정하려고하는데 문제가 있습니다. 위의 오류가 계속 발생합니다. 내가 여기에 sessionPdo 클래스치명적인 오류 : PHP, PDO, 세션,
public function _write($id, $sessionData)
{
$session = $this->fetchSession($id); // line 176
if($session === false) {
$stmt = $this->db->prepare('INSERT INTO sessions (id, data, unixtime) VALUES (:id, :data, :time)');
} else {
$stmt = $this->db->prepare('UPDATE sessions SET data = :data, unixtime = :time WHERE id = :id');
}
$stmt->execute(array(
':id' => $id,
':data' => $sessionData,
':time' => time()
));
if($this->transaction) {
$this->db->commit();
}
}
내부의 기능이고 여기에 도움이 경우에 fetchSession 방법입니다 라인 (176) 및
(201)에 오류가있어 말한다. 프로그래머가 클래스의 외부에서 $이 전화를 시도하기 때문에 나는 내가 찾은 모든 솔루션과 같은 잘못된 뭘하는지 찾기 위해 싸워 왔어
public function fetchSession($id)
{
$stmt = $this->db->prepare('SELECT id, data FROM sessions WHERE id = :id AND unixtime > :unixtime');
$stmt->execute(array(':id' => $id, ':unixtime' => (time() - (int) ini_get('session.gc_maxlifetime'))));
$sessions = $stmt->fetchAll();
if($this->transaction) {
$this->db->commit();
}
return empty($sessions) ? false : $sessions[0] ;
}
입니다. 저는 PDO를 처음 사용하기 때문에 당신이 줄 수있는 도움에 미리 감사드립니다.
코드 자체가 잘 보입니다. 문제는 처음에는 무엇이든'_write()'를 호출 한 것입니다. 이 코드가 객체 범위 밖에서 _write()를 호출하면 $ this가 _write() 내부에서 정의되지 않으므로이 오류가 발생합니다. –
어떤 줄이 '176'과 '201'입니까? –
PDO와는 아무런 관련이 없습니다. '_write()'를 아무 곳이나 정적으로 호출하지 않아도 될까요? 'sessionPdo :: _ write (.....)'? 176 줄 바로 앞에'print_r (debug_backtrace())'를 추가하여 무엇이 무엇을 호출하는지보십시오. – alexantd