Fonction PHP

Fermé
Little - 27 nov. 2013 à 20:13
 Little - 27 nov. 2013 à 22:05
Bonsoir,

je me suis crée une fonction PHP pour pouvoir récupérer certains champs dans ma BDD. Lorsque je viens à l'utiliser les champs que je récupère ne s'affichent pas

<?php
function donnees(){
$db = Base::getConnection();
$query = $db->query("MA_REQUETE");
$tabDonnees= $query->execute();
return array($tabDonnees);
}
?>

(Je n'écris pas ma requête car elle passe, le problème ne vient pas de là.)

Voici ensuite la façon dont j'utilise ma fonction:

<?php
$tabDonnees= donnees();
foreach ($tabDonnees as $data){
echo'
<div>
<img src="'.$data->nomFichier.'" />
<div id="exce-x">
<img src="'.$data->nomFichier2.'" />
</div>
<div id="content-exec">
<strong>'.$data->prenom.'</strong><i>'.$data->nom.'</i>
</div>
</div>';
}
?>

Je ne sais pas comment interpréter les résulats de var_dump pour débugger car je débute.
Juste pour info: si je fais un var_dump($tabDonnees); exit(); après ou avant mon foreach, j'obtiens array(1) { [0]=> bool(true) }

Si quelqu'un peut m'éclairer...

Merci
A voir également:

2 réponses

ElementW Messages postés 4814 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 227
Modifié par gravgun le 27/11/2013 à 20:55
Bonsoir, PDO ça ne s'utilise pas comme ça...
$db
c'est un objet PDO, et sa fonction PDO::Query renvoie directement un PDOStatement dont la requête a déjà été effectuée.
$tabDonnees= $query->execute();
rééxécute donc inutilement la requête.

Pour ce qui est de la récupération des résultats dans un array, on utilise PDOStatement::fetch, et comme tu utilises chaque ligne comme un objet (tu utilises leur champs avec
->
pour désigner la colonne) on utilise le flag PDO::FETCH_OBJ; le tout dans une boucle pour peupler l'array des résultats:
$tabDonnees = array();
while($obj = $query->fetch(PDO::FETCH_OBJ)) {
    $tabDonnees[] = $obj;
}

Et comme $tabDonnees est un tableau, ça serait idiot de le mettre dans un autre tableau, donc on met plutot:
return $tabDonnees;


Et là devrait plus y avoir de pépin :)
from human import idiocy
del idiocy
0
Non ça ne passait pas, du coup j'ai fais comme cela:

$db = Base::getConnection();
$query = $db->query(MA_REQUETE);
$query->execute();

$tabGalerie = $query->fetchAll(PDO::PARAM_STR);

return $tabGalerie;

Et maintenant il n'y a plus de souci ;)
0