2014-08-27 24 views
0

我有一個方法,稱爲getPerso返回一個數組與我的成員的所有信息。這裏是方法:我的方法不起作用,不返回數組

public function getPerso($id) 
{ 
    if(is_int($id)) 
    { 
     $req = $this->_db->prepare('SELECT * FROM personnages WHERE id = :id'); 
     $req->execute(array(
      'id' => $id)); 
     $donnee = $req->fetch(); 
     $req->closeCursor(); 
     return $donnee; 
    } 
} 

它只需要一個int作爲參數。我使用$_SESSION['id'],其中包含登錄參數的成員的ID。但是,當我執行此代碼時:

$donnee = $manager->getPerso($_SESSION['id']); 
var_dump($donnee, $_SESSION['id']); 

我的$ donnee變量爲空。這就是我從獲得的var_dump:

空字符串(1)「4」

我的$ donnee變量應該包含一個數組,其成員的所有信息。希望有人有一個解決方案。

+0

對':id'沒有匹配的行,或者您沒有看到錯誤。默認情況下,PDO錯誤默默無聞。你是否設置了連接來引發異常? '$ this - > _ db-> setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION);''確保在prepare()失敗時它會拋出異常。否則,你可能沒有匹配的行。 – 2014-08-27 19:29:26

+0

你簡直假設你的查詢成功了。除非您明確啓用異常,否則PDO在失敗時返回布爾值false。所以無論你的 - >準備失敗, - > execute()失敗,或者 - > fetch()失敗。 – 2014-08-27 19:33:28

+1

'$ req-> execute(array(':id'=> $ id));' – 2014-08-27 19:34:00

回答

0

使用is_numeric()而不是is_int()。如果您將字符串作爲字符串傳遞,則is_int()將返回false

+0

非常感謝,你解決了我的問題;-) – 2014-08-27 19:46:25