8791 sujets

Développement web côté serveur, CMS

bonjour,

j'utilise un code qui fonctionne.....en gros le voici

dans une classe, j'ai une fonction

	public function query($sql, $data=array()) {
		$req = $this->connexion->prepare($sql);
		$req->execute($data);
		return $req->fetchAll(PDO::FETCH_OBJ);	
	}

qui prépare une requête pdo avec une tableau $data optionnel et qui l’exécute, et ça renvoi un objet

je l'appelle comme ceci par exemple

$theLast  = $DB->query('SELECT * FROM products ORDER BY id DESC LIMIT 1');

dans cet exemple je récupère le dernier index d'une table, rien d'exceptionnel.
dans $theLast je m'attend à récupérer un objet, mais si je fais un var_dump il me dit que c'est un tableau. Si je fais echo $theLast->id , il me répond Notice: Trying to get property of non-object in F:\vhosts\giboutique\shop\admin\new_article.php on line 22

La seule façon de récupérer la valeur est de faire

foreach($theLast as $lastId):
echo $lastId->id;
endforeach;


je ne comprend pas pourquoi je dois faire une boucle foreach alors que je n'ai qu'un enregistrement.

merci
merci pour ton retour...

je vais tester ça..

en fait la classe est issue d'un tutoriel et c'est vrai, le fecthAll est dans la fonction contenue dans la classe, j'avais pas percuté.

Je vais essayer de faire une fonction supplémentaire pour les requêtes qui ne retournent qu'un seul résultat, avec fetch

edit: bingo, c'était bien ça, merci à toi
Modifié par lionel_css3 (04 Jan 2013 - 23:39)