5

json_encode() 関数を使用すると、メソッドは 2 つの同じ値を持つ Json を返します。1 つは文字列キー、もう 1 つはインデックスです。以前はこの問題はありませんでした。

$req = $bdd->prepare("SELECT mail,description FROM identifiant WHERE mail = :mail AND pass=:pass");
        if ($req->execute(array(
                    'mail' => $_COOKIE['mail'],
                    'pass' => $_COOKIE['pass']))) {
            header('Content-type: application/json');

            return json_encode($req->fetchAll());

応答:

[
   {
      "mail": "root@root.com",
      "0": "root@root.com",
      "description": "a description",
      "1": "a description"
   }
]

インデックスキーがない場合はどうすればよいですか?

4

4 に答える 4

11

PDO::FETCH_ASSOC フェッチ モードを使用します。

return json_encode($req->fetchAll(PDO::FETCH_ASSOC));
于 2013-10-09T09:03:47.183 に答える
4

ではなくjson_encode、PDO インスタンスのフェッチ モードが に設定されているためPDO::FETCH_BOTHです。PDOStatement::fetchAllのフェッチ スタイルのドキュメントを参照してください。

于 2013-10-09T09:03:34.027 に答える
2

これを使って:

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

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

PDO::FETCH_BOUND : 結果セット内の列の値を返しTRUE、それらが PDOStatement::bindColumn() メソッドでバインドされた PHP 変数に割り当てます

PDO::FETCH_CLASS : 要求されたクラスの新しいインスタンスを返し、結果セットの列をクラスの名前付きプロパティにマッピングします。fetch_style に PDO::FETCH_CLASSTYPE (例: PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE ) が含まれている場合、クラスの名前は最初の列の値から決定されます。

PDO::FETCH_INTO : 要求されたクラスの既存のインスタンスを更新し、結果セットの列をクラスの名前付きプロパティにマッピングします

PDO::FETCH_LAZY : PDO::FETCH_BOTHPDO:: FETCH_OBJ を組み合わせて、アクセス時にオブジェクト変数名を作成します

PDO::FETCH_NUM : 列 0 から始まる、結果セットで返される列番号でインデックス付けされた配列を返します

PDO::FETCH_OBJ : 結果セットで返された列名に対応するプロパティ名を持つ匿名オブジェクトを返します

PDOステートメント::フェッチ

return json_encode($req->fetchAll(PDO::FETCH_ASSOC));
于 2013-10-09T09:07:56.990 に答える
0

パラメータとして PDO::FETCH__ASSOC を使用する必要があります

$req = $bdd->prepare("SELECT mail,description FROM identifiant WHERE mail = :mail AND pass=:pass");
        if ($req->execute(array(
                    'mail' => $_COOKIE['mail'],
                    'pass' => $_COOKIE['pass']))) {
            header('Content-type: application/json');

  return  json_encode($req->fetchAll(PDO::FETCH_ASSOC));

}

于 2013-10-09T09:05:07.560 に答える