1

JSON 応答に余分なキーが含まれているようです。理由はありますか?

以下は、JSON 応答からの抜粋です。

{
      "0": "1",
      "id": "1",
      "1": "XX University",
      "name": "XX University",
      "2": "http:\/\/ree.com\/images\/xxUniversity.png",
      "backgroundImageUrl": "http:\/\/ree.com\/images\/XXUniversityLogo.png",
      "3": "http:\/\/ree.com\/images\/xxUniversity.png",
      "logoImageUrl": "http:\/\/ree.com\/images\/XXUniversityLogo.png"
    },

ここに私のPHPコードがあります:

$query = "SELECT * from $entity"; //Bad security,for a different question
    $results = mysqli_query($con,$query);

    //Parse to JSON
    $json=array();

    while($row=mysqli_fetch_array($results)){
        $json[]=$row;
    }

    //Close connection
    mysqli_close($con);

    //Encode and send response as JSON (using the entity type as a parameter)
    //echo json_encode(array($entity => $json), JSON_FORCE_OBJECT);

    echo json_encode(array ($entity =>$json)); 
4

2 に答える 2

4

あなたの問題はmysqli_fetch_array. MYSQLI_ASSOC2 番目のパラメーターとして渡します。

while($row=mysqli_fetch_array($results,MYSQLI_ASSOC)){
    $json[]=$row;
}

ドキュメントから:

このオプションのパラメーターは、現在の行データから生成される配列の型を示す定数です。このパラメーターの可能な値は、定数MYSQLI_ASSOCMYSQLI_NUM、またはMYSQLI_BOTHです。

MYSQLI_ASSOC定数を使用すると、この関数は mysqli_fetch_assoc() と同じように動作し、 MYSQLI_NUMは mysqli_fetch_row() 関数と同じように動作します。最後のオプションMYSQLI_BOTHは、両方の属性を持つ単一の配列を作成します。

于 2013-04-09T16:19:43.713 に答える