Fonction PHP

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. 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 ;)
    1. Contributeur
      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