3

データベースからケースのレコードを返すために作成したスクリプトがあります。実際に2つのレコードがある場合、mysqlクエリに対して1つのレコードを返します。これは私が返しているものです:

{ "cases": [ {"name":"Test Case for App","number":"3846"}] } 

私は見るべきです:

{ "cases": [ {"name":"Test Case for App","number": "2903"}, {"name":"Test Case 2","number": "2856"} ] }

これが私の情報源です:

$sql = "select * from cases as c join contacts_cases as conc on c.id = conc.case_id where conc.contact_id = '1b360507'";
$query = mysql_query($sql);  

// If we find a match, create an array of data, json_encode it and echo it out  
if (mysql_num_rows($query) > 0)  
{  
    $row = mysql_fetch_assoc($query);  
    $response = array(  
        'name' => $row['name'],  
        'number' => $row['case_number']
    );  

    echo '{ "cases": [ ',  json_encode($response), "] }";
4

2 に答える 2

6

複数の結果を期待している場合は、試してみてください

if (mysql_num_rows($query) > 0)  
{  
    $responses = array();
    while($row = mysql_fetch_assoc($query)) {
        $responses[] = array(  
            'name' => $row['name'],  
            'number' => $row['case_number']
        );  
    }
    echo '{"cases": ' . json_encode($responses) . '}';
}
于 2012-07-12T17:32:53.073 に答える
2

すべての行をループする必要があります。取得するのは1つだけです。

また、JSONを自分で作成しようとしないでください。アレイを希望どおりに作成してからjson_encode、全体を作成します。

$cases = array();
while ($row = mysql_fetch_assoc($query)) {
    $cases[] = array(  
        'name'   => $row['name'],  
        'number' => $row['case_number']
    );
}

echo json_encode(array('cases' => $cases));
于 2012-07-12T17:42:13.867 に答える