Fonction PHP

Little -  
 Little -
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

2 réponses

  1. ElementW Messages postés 5690 Statut Contributeur 1 293
     
    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
  2. Little
     
    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