Sélectionner une valeur dans un array multidimensionnel (+SQL & PDO)

Sélectionner une valeur dans un array multidimensionnel (+SQL & PDO) - PHP - Programmation

Marsh Posté le 25-06-2015 à 10:31:26    

Hello,
Ma question porte également sur PDO et SQL, donc peut-être qu'elle devrait être dans la catégorie SQL, je m'excuse si c'est le cas :)
 
Mettons que j'ai le code suivant :
 

Code :
  1. $foo = $bdd->prepare($rqt);
  2. $foo->execute();
  3. $resultats = $foo->fetchAll();


Et dans $rqt, je mets une requête select (avec une jointure entre les tables "Beatles b" et "Statut s" sur les colonnes "statut_id" ), tel que le résultat est le suivant :
 

Code :
  1. b.id    b.firstname    b.lastname    b.statut_id   s.statut_id     s.statut
  2. 0       John           Lennon        0             0               Mort
  3. 1       Paul           McCartney     1             1               Vivant
  4. 2       Ringo          Starr         1             1               Vivant
  5. 3       George         Harrison      0             0               Mort


(La première ligne est le nom des colonnes, qui ne sort pas comme résultat de la requête, mais est important pour ma question)  
 
Est-ce que j'ai un moyen de sélectionner uniquement le s.statut de ringo starr par exemple ? J'imagine que $resultats[2][5] fonctionnerait, mais il me semble que je ne peux pas être certain que les colonnes sortiront dans le bon ordre, tel que le [5] désigne la colonne "s.statut". Je me trompe ?  
Est-ce qu'il n'y a pas un moyen plus sûr, par exemple en utilisant le nom de la colonne ($resultats[2]['statut'] ou $resultats[2]['s.statut']) ? Ou autrement ?  
 
NB : Je demande parce que j'ai testé et je n'y arrive pas, mais ça vient peut être d'une autre partie de mon code, donc je veux savoir si c'est normal que ça ne fonctionne pas (et le problème vient de là), ou si ça devrait fonctionner (et le problème vient d'autre part) :)
 
NB 2 : Sinon, le problème est peut être au niveau de fetchAll() ? Si c'est le cas, quelle autre méthode je dois utiliser ?
 
Merci d'avance.

Reply

Marsh Posté le 25-06-2015 à 10:31:26   

Reply

Marsh Posté le 01-07-2015 à 14:56:41    

Hello !
 

Code :
  1. SELECT d.id,b.firstname,b.lastname,b.statut_id,s.statut_id as status_id_table_s,s.statut // le AS dans ta requete SQL pour renommer la colonne et être sur que c'est celle-la que tu pointes
  2. from ...


 
et  
 

Code :
  1. $foo = $bdd->prepare($rqt); // Tu prépares la requete
  2.     $foo->execute(array()); // Normalement si tu prepares la requete, c'est que tu as des données à mettre en where donc il faut envoyer un tableau
  3.     $resultats = $foo->fetchAll(); // Le fetchAll est bon, mais j'aurais mis un PDO_FETCH_OBJ
  4.     echo $resultats[2]['status_id_table_s']; //1


 
Cela répond à ta question? :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed