Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2011, 22h21   #1
Invité de passage
 
Inscription : juillet 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 21
Points : 3
Points : 3
Par défaut PDO - Retour du tableau de résultats

Bonjour,

J'utilise depuis peu PDO alors je me permet de solliciter votre aide sur le problème suivant:
A l'intérieur de ma class, j'ai une méthode qui effectue une requête via l'objet PDO:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
public function affichage($id)
{
   $sql = $this->bdd->prepare('select * from ma_table where id= :id');
   $sql->bindValue(':id', $mon_id);
   $sql->execute();
   $result = $sql->fetchAll(PDO::FETCH_ASSOC);
   for($z = 0; $z <count($result); $z++)
   {
	return $result;
   }
}

Je comprends que ce code ne fonctionne pas car le return me fait "quitter" la fonction.
Cependant, deux questions subsistent...

1- comment faire pour retourner le tableau(array) de résultat suite à une requête afin que je puisse faire des affichages et traitements dans ma page php plutôt que dans la class ???
2-$sql->fetch() à l'air de renvoyer qu'une ligne de résultat... du coup, pour avoir tout mes résultats j'utilise fetchAll() mais les résultats sont dans des sous tableaux (array d'array). Est-il possible de tout avoir dans le même Array principale ?

Je vous remercie par avance.
joker92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 22h52   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
ton for sert pas a grand chose en plus pour parcourir un arra uc'est plus simple de faire un foreach, et la tu quittes a la première itération...
sinon pour les sous tableau c'est normal, je vois pas comment tu voudrais tout afficher dans le même ca n'aurai pas de sens.
fais juste :

Code :
return $sql->fetchAll(PDO::FETCH_ASSOC);

ps : ton bind n'est surment pas bon non plus, fais :

Code :
$sql->bindValue(':id', $mon_id, PDO::PARAM_INT);
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 02h04   #3
Invité de passage
 
Inscription : juillet 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 21
Points : 3
Points : 3
Ça n'étais pas si méchant mais c'est grâce à toi, merci de m'avoir apporté ton aide pour résoudre ce code !

juste une question: c'est si important de préciser
?
joker92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 09h57   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par joker92 Voir le message
Ça n'étais pas si méchant mais c'est grâce à toi, merci de m'avoir apporté ton aide pour résoudre ce code !

juste une question: c'est si important de préciser
?
oui et non, on va dire que c'est plus logique et plus propre, et si ton serveur est mode strict il va retourner une erreur, donc :
pas le mettre = risque d'erreur
le mettre = aucun risque d'erreur

la requête reviens à ca :

Code :
select * from ma_table where id='1'
au lieu de
Code :
select * from ma_table where id=1
je te conseil aussi de toujours mettre en majuscule les mots SQL, et protéger les noms de table (pareil risque d'erreur en moins)

Code :
SELECT * FROM `ma_table` WHERE `id`=1
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h43.


 
 
 
 
Partenaires

Hébergement Web