0

私は問題があります。データベースからデータを取得し、それを JSON にエンコードしてから、iOS アプリケーションに送り返すために数週間試みています。問題は、JSON が無効になるたびにhttp://jsonviewer.stack.hu/と表示さ れることです。これが私が今持っているコードです。

//connection to the database
 $dbhandle = mysql_connect($hostname, $username, $password) 
 or die("Unable to connect to MySQL");
 //echo "Connected to MySQL<br>";


//select a database to work with
$selected = mysql_select_db("test",$dbhandle) 
or die("Could not select examples");

$result = mysql_query("SELECT * FROM test.debiteur WHERE SORT_NAAM LIKE '%eri%'");



while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

$deb_nr['deb_nr'] = $row['DEB_NR'];
$deb_naam['name'] = $row['DEB_NAAM'];
$deb_adres['adrs'] = $row['DEB_ADRES'];


$testje = array_merge($deb_nr, $deb_naam, $deb_adres);

$testjevervolg = array('klanten' => array($testje));

 sendResponse(200, json_encode($testjevervolg));
 }
 }

これはそれが返すものです:

{
"klanten": [
{
  "deb_nr": "10010",
  "name": "ERIKA Handelsonderneming",
  "adrs": "Aan de Heibloem 17"
}
]
}{
"klanten": [
{
  "deb_nr": "25071",
  "name": "Afdeling Heffing & Invordering",
  "adrs": "Postbus 1275"
}
]
}{
"klanten": [
{
  "deb_nr": "25247",
  "name": "v.d. Heerik b.v.",
  "adrs": "Flemingstraat 3-5"
}
]
}{
"klanten": [
{
  "deb_nr": "25454",
  "name": "Toering Automatisering",
  "adrs": "Appelhof 17a"
}
]
}{
"klanten": [
{
  "deb_nr": "25601",
  "name": "Ratering Bouw & Industrie",
  "adrs": "de Hogenkamp 1"
}
]
}

それが私が得るものです。問題は、'klanten' の配列が必要であり、すべての deb_nr、name、および adrs が存在する必要があることです。今ではすべてが独自の「クランテン」を取得しています どうすればこれを解決できますか?

ありがとう。

4

3 に答える 3

1

この関数を使用して、JSON をアプリに返します。

function sql2json($query) {
 $data_sql = mysql_query($query) or die("'';//" . mysql_error());
 $json_str = ""; 
 if($total = mysql_num_rows($data_sql)) { 
   $json_str .= "[\n";
    $row_count = 0;    
    while($data = mysql_fetch_assoc($data_sql)) {
        if(count($data) > 1) $json_str .= "{\n";
        $count = 0;
        foreach($data as $key => $value) {
         if(count($data) > 1) $json_str .= "\"$key\":\"$value\"";
         else $json_str .= "\"$value\"";
            $count++;
            if($count < count($data)) $json_str .= ",\n";
        }
        $row_count++;
        if(count($data) > 1) $json_str .= "}\n";
        if($row_count < $total) $json_str .= ",\n";
    }
   $json_str .= "]\n";
  }
  mysql_free_result($data_sql);
  return $json_str;
}
于 2013-05-21T08:23:56.707 に答える
0

次のタイプの結果を取得するには:

[
    {
        "deb_nr": "25071",
        "name": "Afdeling Heffing & Invordering",
          "adrs": "Postbus 1275"
    },
    {
        "deb_nr": "25071",
        "name": "Afdeling Heffing & Invordering",
          "adrs": "Postbus 1275"
    },
    ...
]

=============================================

$result = array();
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$result[] = array(
  "deb_nr" => $row['DEB_NR'],
  "name" => $row['DEB_NAAM'],
  "adrs" => $row['DEB_ADRES'],
);
}

header('Content-type: application/json');
echo json_encode($result);

次のタイプの結果を取得するには:

[
    {
        "klanten" : {
            "deb_nr": "25071",
            "name": "Afdeling Heffing & Invordering",
              "adrs": "Postbus 1275"
        },
    }
    {
        "klanten" : {
            "deb_nr": "25071",
            "name": "Afdeling Heffing & Invordering",
              "adrs": "Postbus 1275"
        },
    },
    ...
]

=============================================

$result = array();
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$result[]["klanten"] = array(
  "deb_nr" => $row['DEB_NR'],
  "name" => $row['DEB_NAAM'],
  "adrs" => $row['DEB_ADRES'],
);
}

header('Content-type: application/json');
echo json_encode($result);

あなたが望む他のタイプの応答を想定することはできませんので、他のタイプの出力が必要な場合はお知らせください.

于 2013-05-21T08:43:59.173 に答える
0

これを作成しましたが、テストしていません。現在は textwrangler を使用しているだけで、前進するのに役立つかもしれません。

次のようなことを試してみてください:

$completeJson = array();


while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

$deb_nr['deb_nr'] = $row['DEB_NR'];
$deb_nr['name'] = $row['DEB_NAAM'];
$deb_nr['adrs'] = $row['DEB_ADRES'];


 array_push($completeJson,$deb_nr);


 }
 $testjevervolg = array('klanten' => $completeJson);
 sendResponse(200, json_encode($testjevervolg));
于 2013-05-21T08:33:27.820 に答える