2010-03-14 6 views
2

Je continue à obtenir un « Notice: Undefined index: did » erreur avec cette requête, et je ne comprends pas pourquoi ... Je suis beaucoup plus habitués à MySQL, donc, peut-être la syntaxe est faux?postgresql aide avec boucle php

Ceci est le code de requête php:

function get_demos() { 
     global $session; 
     $demo = array(); 
     $result = pg_query("SELECT DISTINCT(did,vid,iid,value) FROM dv"); 
     if(pg_num_rows($result) > 0) { 
      while($r = pg_fetch_array($result)) { 
       switch($r['did']) { 
        case 1: 
         $demo['a'][$r['vid']] = $r['value']; 
         break; 
        case 2: 
         $demo['b'][$r['vid']] = $r['value']; 
         break; 
        case 3: 
         $demo['c'][$r['vid']] = $r['value']; 
         break; 
       } 
      } 
     } else { 
      $session->session_setMessage(2); 
     } 

     return $demo; 
    } 

Quand je lance cette requête à l'invite p, j'obtiens des résultats:

"(1,1,1,"A")" 
"(1,2,2,"B")" 
"(1,3,3,"C")" 
"(1,4,4,"D")" 
"(1,5,5,"E")" 
"(1,6,6,"F")" 
"(1,7,7,"G")" 
"(1,8,8,"H")" 
"(1,9,9,"I")" 
"(1,10,A,"J")" 
"(1,11,B,"K")" 
"(1,12,C,"L")" 
"(1,13,D,"M")" 
"(2,14,1,"A")" 
"(2,15,2,"B")" 
"(2,16,0,"C")" 
"(3,17,1,"A")" 
"(3,18,2,"B")" 
"(3,19,3,"C")" 
"(3,20,4,"D")" 
"(3,21,5,"E")" 
"(3,22,6,"F")" 
"(3,23,7,"G")" 
+0

essayer un 'var_dump ($ r)' dans votre boucle while –

+0

En fait, compris que le DISTINCT était ce qu'il n'a pas aimé ... – TwixxyKit

+0

Alors s'il vous plaît écrire une réponse à votre propre question et l'accepter (après 48 ? heures) – VolkerK

Répondre

0

Vous devez utiliser la fonction pg_fetch_assoc() si vous voulez obtenir associative tableau en $ r.

+1

pg \ _fetch \ _array() par défaut renvoie le numérique _et_ les indices associatifs, voir http://docs.php.net/pg_fetch_array – VolkerK