デフォルトではなくデータベースにセッションデータを保存するスクリプトを変更しようとしていますが、少し問題があります私は上記のエラーが発生し続ける。それは私がここで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