5

データベースの PDO クエリが不要な値を配列に返します。

Array
(
    [contentID] => 9
    [0] => 9
    [type] => operations
    [1] => operations
    [type_alts] => pages
    [2] => pages
    [url] => ctt-partners
    [3] => ctt-partners
    [title] => CTT Partners
    [4] => CTT Partners
    [subtitle] => 
    [5] => 
    [online] => 1
    [6] => 1
    [access] => 0
    [7] => 0
    [req] => 0
    [8] => 0

)

私は、配列が同じ整数フィールドと名前を返さないことを望んでいます。たとえば[0] => 9, [1] => operations。これらも欲しくない。

なぜ彼らはここにいるのか、どうすればそれらを取り除くことができますか.

ありがとう、

4

4 に答える 4

7

現在のフェッチ タイプは :

PDO::FETCH_BOTH (デフォルト): 結果セットで返されるように、列名と 0 から始まる列番号の両方でインデックス付けされた配列を返します

一方、要件については、次のようにする必要があります。

PDO::FETCH_ASSOC: 結果セットで返される列名でインデックス付けされた配列を返します

fetch_style

次の行が呼び出し元に返される方法を制御します。この値は PDO::FETCH_* 定数の 1 つである必要があり、デフォルトは PDO::ATTR_DEFAULT_FETCH_MODE (デフォルトは PDO::FETCH_BOTH) の値です。

参照:

于 2013-10-27T11:40:49.093 に答える
2

したがって、PDOにそれを強制するだけです...

try {
    $pdo = new PDO(...);
    $pdo->query('SELECT * FROM foo');

    foreach ($pdo->query('SELECT * FROM foo', PDO::FETCH_ASSOC) as $row) {
        ...
    }
} catch (PDOException $e) {
    // error handling
}

さまざまな PDO フェッチ モードを見てください。 http://www.php.net/manual/en/pdostatement.setfetchmode.php

于 2013-10-27T11:42:43.960 に答える
1

PDOStatement::fetch()のドキュメントをご覧ください。

最初のパラメーターは、次の行が呼び出し元に返される方法を定義します。利用可能な定義済みの定数があります。

◦ PDO::FETCH_ASSOC: 結果セットで返される列名でインデックス付けされた配列を返します

◦ PDO::FETCH_BOTH (デフォルト): 結果セットで返される列名と 0 から始まる列番号の両方でインデックス付けされた配列を返します

...
http://www.php.net/manual/pdostatement.fetch.php

おそらくFETCH_BOTH、引数の有無にかかわらず関数を呼び出します。デフォルトはFETCH_BOTHです。

フェッチ タイプを に変更しFETCH_ASSOCます。

于 2013-10-27T11:40:56.923 に答える
0

JSONファイルを返す必要があるため、これを使用することを好みます。

 $conn = new PDO("...","...","...");
 $stmt = $conn->prepare($query);
 $stmt->execute();
 $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
于 2018-08-31T03:55:46.023 に答える