2013-04-29 12 views
11

私は$ pdo文を初めて使うので、まだphp.netで読んでいない単純なものかもしれません。私はデータベースを照会するときに重複した結果を受け取っています。PDOが正しくないが重複したデータを返す。キーはデータベースにありません。

結果:

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

クエリは非常に簡単です:

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()); 

問題は、名前付きのキー(umeta_iduser_idmeta_keymeta_value)が存在しないということである、数字キーしない。どのようにクエリがこれらを返すのでしょうか?そして、私はそれらが返されることさえ防ぐ方法はありますか?

+0

誰もが尋ねる前に、はい、私は手動でチェックし、小さなコレクションにデータベースを制限するので、重複が実際には存在しませんしています。 – Nukeface

答えて

21

を取得するためにそれはあなたが使用しているだけで、現在のFETCH_MODEだ、重複はありません。連想キーとして取得するには、そのように指定する必要があります。デフォルトでは両方としてフェッチされます。そのような

用途:

$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

それを固定して冷やしてください。あまりにも悪い私は答えとして2つの答えを選択することはできません、あなたとYogeshの両方が同時にそれにあった。 – Nukeface

+0

@Nukeface私はそれが私の最初の...と思う:)。しかし、あなたは誰かの答えを受け入れることができます... :) –

+1

タイマーがカウントダウンするとあなたは素早くなりました;)これを選択しますが、フェッチのドキュメントはフェッチ機能に行きました。私の最初のルック・スルーの違い、そしてそうではありませんでした。 – Nukeface

9

これは重複データではありませんfetchAllは、数値配列と連想配列のデータを返します。

このDocs

使用を参照してください唯一の連想配列

return $query->fetchAll(PDO::FETCH_ASSOC); 
関連する問題