2014-08-27 1 views
0

J'ai une méthode appelée getPerso qui retourne un tableau avec toutes les informations de mon membre. Voici la méthode:Ma méthode ne fonctionne pas et ne retourne pas un tableau

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; 
    } 
} 

Il suffit d'un paramètre int. J'utilise $_SESSION['id'] qui contient l'identifiant du membre connecté pour le paramètre. Mais, lorsque j'exécute ce code:

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

Ma variable $ donnee est vide. Voici ce que je reçois de la var_dump:

chaîne NULL (1) « 4 »

Ma variable $ donataire est censé contenir un tableau avec toutes les informations du membre. J'espère que quelqu'un a une solution.

+0

Soit il n'y a pas de ligne correspondante pour ': id', soit vous ne voyez pas d'erreur. Par défaut, les erreurs PDO sont silencieuses. Avez-vous configuré la connexion pour lancer des exceptions? '$ this -> _ db-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);' assurera qu'il lancera une exception si le 'prepare()' échoue. Sinon, il se peut que vous n'ayez pas de ligne correspondante. –

+0

vous supposez simplement que votre requête a réussi. sauf si vous activez explicitement des exceptions, PDO renvoie boolean false en cas d'échec. Donc, soit votre -> préparation a échoué, le -> execute() a échoué, ou -> fetch() a échoué. –

+1

'$ req-> execute (array (': id' => $ id));' –

Répondre

0

Utilisez is_numeric() à la place de is_int(). is_int() retournera false si vous transmettez un nombre sous forme de chaîne

+0

Merci beaucoup, vous résolvez mon problème ;-) –

Questions connexes