2013-04-29 7 views
11

Sono nuovo nell'usare le dichiarazioni $ pdo quindi potrebbe essere qualcosa di semplice che non ho ancora letto su php.net. Sto ricevendo risultati duplicati durante l'interrogazione del database.PDO che restituisce dati non corretti ma duplicati. La chiave non è nel database.

Risultato:

[0] => Array 
    (
     [umeta_id] => 31 
     [0] => 31 
     [user_id] => 2 
     [1] => 2 
     [meta_key] => fbmeta 
     [2] => fbmeta 
     [meta_value] => someMetaValueStuff; 
     [3] => someMetaValueStuff; 
    ) 

la query è abbastanza semplice:

function getData(){ 
    global $pdo; 
    $query = $pdo->prepare('SELECT * FROM usermeta WHERE meta_key = "fbmeta" LIMIT 0,30'); 
    $query->execute(); 

    return $query->fetchAll(); 
} 

print_r(getData()); 

Il problema è che esistono le chiavi denominate (umeta_id, user_id, meta_key, meta_value), i tasti numerici non. Come mai la query restituisce questi? E come posso impedire che vengano addirittura restituiti?

+0

prima che qualcuno chiede, sì ho controllato manualmente e limitato il database per una piccola collezione, in modo davvero non esistono duplicati. – Nukeface

risposta

21

Non è duplicati associativa, è solo la corrente FETCH_MODE che si sta utilizzando. Per ottenere come chiavi associative devi solo specificare come tale; per impostazione predefinita recupera entrambi.

Usa in questo modo:

$query->fetchAll(PDO::FETCH_NUM); // to fetch with numeric indexes 
$query->fetchAll(PDO::FETCH_ASSOC); // to fetch with associative indexes 

fetchAll docs
fetch docs

+2

Cool che lo ha risolto. Peccato, non posso selezionare 2 risposte come risposta, sia tu che Yogesh ci sei stato nello stesso momento. – Nukeface

+0

@Nukeface Penso che sia il mio primo ... :). Ma puoi accettare la risposta di chiunque, è la tua scelta ... :) –

+1

Farà quando il timer conta alla rovescia, voi ragazzi siete veloci;) Sceglierà comunque questo, i documenti di recupero sono andati alla funzione di recupero dove avrei dovuto notare le differenze sul mio primo look-through, e non l'ho fatto. – Nukeface

9

Questo non è un dato duplicato fetchAll restituisce i dati nell'array numerico e nell'array associativo.

Vedi l'Docs

Utilizzare questo per il recupero di solo serie

return $query->fetchAll(PDO::FETCH_ASSOC); 
Problemi correlati