2013-07-04 40 views
0

我有這樣的代碼在PHP:如何在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應用程序,這是來自服務器的響應記錄的響應串是:

執行查詢...陣列 執行查詢...陣列 [[{ 「用戶名」: 「xcodeSim」, 「PUNTOS」: 「5」}],[{ 「用戶名」: 「dannyrodri」,」 PUNTOS「:」5「}]]

不確定數組來自哪裏,但我得到一個有兩個數組的數組。我想我只需要調整它,使其成爲一個只有2個字典的數組。如何將此代碼重新編碼爲我的iOS應用程序?

+0

什麼是您預期的結果和你得到了什麼結果 – Miguelo

+0

不應該查詢使用'$ value',而不是'$ _POST ['userNa']'? – Barmar

+0

而當你在一個字符串中插入一個數組引用時,你必須省略引號。你應該得到一個語法錯誤,是嗎? – Barmar

回答

0

$result查詢將失敗,因爲引號試試這個:

$result = mysql_query("SELECT username, SUM(points) AS PUNTOS FROM tags WHERE username='".$_POST["userNa"]."' GROUP BY username"); 
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); 
相關問題