2016-02-08 28 views
0

我已經嘗試設置中存儲的database.I會議已經通過實施SessionHandlerInterface class.However我havenot使用之前準備好的語句來實現這一點,但現在我想實施以使其SQL注入預處理語句proof.However,當我嘗試prepare方法它顯示我準備沒有定義

方法制備未在類

我甚至試圖延伸mysqli_stmt類,其中包含定義的錯誤準備報表的方法。

這是將會話存儲在數據庫中的會話類的完整代碼。代碼

http://codepad.org/KmLtO9ym

部分,使這個問題更加清晰

class SysSession implements SessionHandlerInterface 
{ 
    private $link; 

public function open($savePath, $sessionName) 
{ 
    $link = new mysqli("localhost","root","","cakenbake"); 
    if($link){ 
     $this->link = $link; 
     return true; 
    }else{ 
     return false; 
    } 
} 
public function close() 
{ 
    mysqli_close($this->link); 
    return true; 
} 
public function read($id) 
{ 


    $result = mysqli_query($this->link,"SELECT Session_Data FROM Session WHERE Session_Id = '".$id."' AND Session_Expires > '".date('Y-m-d H:i:s')."'"); 

    /*$result=$this->link->prepare("Some query inside") 
    * This shows up an error stating prepare method not found 
    * 
    */ 

    if($row = mysqli_fetch_assoc($result)){ 
     return $row['Session_Data']; 
    }else{ 
     return ""; 
    } 
} 
+0

您檢查了$ this-> link是否有連接對象? –

+0

連接對象如何?我已經宣佈$鏈接作爲連接對象在開始和使用'$ this->鏈接'我可以訪問它,我想。 –

+0

是的。但檢查您的憑證兩次。還要確保你的「打開」方法先調用。調用該方法後,您可以調用「讀取」方法。 –

回答

0

的問題是我的IDE.It是誰在出errors.Restarted的一個我的IDE,它工作正常。