15

私は $pdo ステートメントを使用するのが初めてなので、php.net でまだ読んでいない簡単なものかもしれません。データベースにクエリを実行すると、重複した結果が返されます。

結果:

[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) が存在し、数値キーが存在しないことです。クエリがこれらを返すのはなぜですか? そして、それらが返されないようにするにはどうすればよいですか?

4

3 に答える 3

25

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

次のように使用します。

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

fetchAll ドキュメント
fetch ドキュメント

于 2013-04-29T09:14:34.187 に答える
11

これは重複データではなくfetchAll、数値配列と連想配列でデータを返します。

ドキュメントを見る

連想配列のみを取得する場合に使用します

return $query->fetchAll(PDO::FETCH_ASSOC);
于 2013-04-29T09:13:12.383 に答える
-1

私のためにトリックを行うようです。これを上に乗せて

use Illuminate\Database\Events\StatementPrepared;

フェッチするたびに pdo::fetch_assoc を含める

return($pdo->fetchAll(\PDO::FETCH_ASSOC));
于 2018-11-14T03:01:40.950 に答える