2012-03-01 11 views
3

私はPHPで自分の関数に問題があります。 異なるキーで2回結果を返します。
数字キーなしで結果を1回だけ欲しいです。PHPなぜ私の関数は異なるキーを持つ配列の結果を2回返しますか?

<?php 
#The query 
$typo = GetRowsParams("SELECT * FROM glyphs WHERE g_OK=1"); 

#The function 
function GetRowsParams($requete, $params = array()) 
{ 
global $bdd; 
$stmt = $bdd->prepare($requete) or die(print_r($req->errorinfo()));; 
$stmt->execute($params); 
$result = $stmt->fetchAll(); 
return $result; 
} 
?> 


# The Array 
Array (
[0] => Array (
    [g_ID] => 1 
    [0] => 1 
    [g_name] => zero_Nagar.svg 
    [1] => zero_Nagar.svg 
    [g_height] => 1174 
    [2] => 1174 
    [g_width] => 352 
    [3] => 352 
    [g_tag] => Test 
    [4] => Test 
    [g_u_ID] => 2 
    [5] => 2 
    [g_path] => 02uploads/Test/zero_Nagar.svg 
    [6] => 02uploads/Test/zero_Nagar.svg 
    [g_path_PNG] => 02uploads/Test/zero_Nagar.png 
    [7] => 02uploads/Test/zero_Nagar.png 
    [g_OK] => 1 
    [8] => 1 
    ) 
[1] => Array (
    [g_ID] => 2 
    [0] => 2 
    [g_name] => A 
    Nagar.svg [1] => A 
      … 
      … 

各行が異なる鍵で2回表示されている理由:

このクエリと機能は、以下の配列を返しますか?私のミスはどこですか?ので、それがある

+0

あなたfetschすべては、私は間違いがないと思います 'mysql_fetch_assoc' – silly

+0

を使用する必要があります。結果セットには常にこのように値が設定されているため、列名またはそのインデックスを使用して結果をフェッチできます。 –

+0

@silly:彼は[PDO](http://php.net/manual/en/book.pdo.php)を使用していますが、mysql拡張機能は使用していません。 –

答えて

3

:(http://www.php.net/manual/en/pdostatement.fetch.phpをあなたが異なるが、ここでスタイルをフェッチ見ることができます)

$result = $stmt->fetchAll(PDO::FETCH_ASSOC); 

+0

Artragisありがとうございました。それはまさに私が探しているものです! – Zorkzyd

2

はそうのような引数PDO :: FETCH_ASSOCを追加...あなたの助けをありがとうデフォルトでphpはすべてのデータがテキストと数値インデックスを持つ配列を返します。 PDOStatement::fetch methods上に読む stmt->fetchAll(PDO::FETCH_ASSOC);

0

:そのようなfechAll機能にのみテキストインデックス、PASSE PDO :: FETCH_ASSOCを保つために 。最初の引数は "フェッチスタイル"で、既定では上記のような配列を取得します。あなただけvaluseするフィールド名をマップする配列をしたい場合は、使用:

$result = $bdd.fetchAll(PDO::FETCH_ASSOC); 
関連する問題