0

私はphpでこのコードを持っています:

<?php

include_once("JSON.php");
$json = new Services_JSON();

//1. PROCESS RECEIVED ARRAY

$handle = fopen("php://input", "rb");
$http_raw_post_data = '';
while (!feof($handle)) {
    $http_raw_post_data .= fread($handle, 8192);
}
fclose($handle);

//just decode to see what kind of object it is
$post_data = json_decode($http_raw_post_data,true);

if (is_array($post_data))
    $response = array("status" => "ok", "code" => 0, "original request" => $post_data);
else
    $response = array("status" => "error", "code" => -1, "original_request" => $post_data);


//CALL DB QUERY

$link = mysql_pconnect("localhost", "user", "pass") or die("Could not connect");
mysql_select_db("mydb") or die("Could not select database");


//CREATE FINAL ARRAY TO RETURN
$arrayToReturn = array();


//----------------------THIS FAILS, POSSIBLY DUE TO WHEN IT RETURNS

foreach ($post_data as $value) 
{
  //CREATE QUERY
  $result = mysql_query("SELECT username, SUM(points) AS PUNTOS FROM tags WHERE username='$value' GROUP BY username");

  echo "executing query...";

  //EXECUTE QUERY & ADD EACH USER/POINTS DICTIONARY TO $resultado ARRAY
  $resultado = array();
  while($obj = mysql_fetch_object($result)) 
  {
    $resultado[] = $obj;
  }

  //STORE RESULTS IN NEW OBJECT TO RETURN
  $arrayToReturn[] = $resultado;

}

?>

元の質問を編集したところ、配列を取得しました...サーバーの応答からのiOSアプリによってログに記録された応答文字列は次のとおりです。

クエリを実行中...配列 クエリを実行中...配列 [[{"username":"xcodeSim","PUNTOS":"5"}],[{"username":"dannyrodri","PUNTOS":"5" }]]

配列という単語がどこから来ているのかわかりませんが、2 つの配列を含む配列を取得しています。2つの辞書だけを含む配列にするために微調整する必要があると思います。これを iOS アプリにエンコードするにはどうすればよいですか?

4

2 に答える 2

0

これを試して:

$array_to_return = array();
if ($post_data) {
  $usernames = implode(',', array_map(function($u) {
    return "'" + mysql_real_escape_string($u) + "'";
  }));
  $result = mysql_query("SELECT username, SUM(points) AS PUNTOS FROM tags WHERE username IN ($usernames) GROUP BY username") or die (mysql_error());
  while ($obj = mysql_fetch_object($result)) {
    array_to_return[] = $obj;
  }
}
echo json_encode($array_to_return);
于 2013-07-04T17:22:41.853 に答える
0

引用符のためにクエリ$result が失敗します。これを試してください:

$result = mysql_query("SELECT username, SUM(points) AS PUNTOS FROM tags WHERE username='".$_POST["userNa"]."' GROUP BY username");
于 2013-07-04T17:14:51.660 に答える