2012-02-15 4 views
0

MySQLデータを配列に出力してからjsonでエンコードするのに問題はありません。json_encode配列とその他のデータ

私はこのjson出力に他の非動的データを追加する方法を理解しようとしています。私は、例えば、必要なもの

if (mysql_num_rows($result) > 0) { 
    while($obj = mysql_fetch_object($result)) { 
     $arr[] = $obj;  
    } 
    echo $_GET['callback'].'('.json_encode($arr).')'; 
}else{ 

} 

に成功した結果の配列を使用してデータのこのフォームを追加し、それをすべてをエンコードする方法はあり

"firstnumber":"0" 
"secondnumber":"10" 

のようなものを追加することですか?

+0

'$ _GET [「コールバックが」]' [クロスサイトスクリプティングのフォームにこのコードが脆弱になります](https://www.owasp.org/index.php/Top_10_2010-A2)攻撃。クライアントはあなたのシステムにJavaScriptコードを注入することができます。 '$ _GET ['callback']'を検証してからクライアントにエコーバックする必要があります。 – Asaph

+0

私に知らせてくれてありがとう、私はこれをすぐにやろう! –

答えて

1

私は私の他のデータとの配列を作成し、最後にそれを追加します:

if (mysql_num_rows($result) > 0) { 

    while($obj = mysql_fetch_object($result)) { 
     $arr[] = $obj;  
    } 

    // Add other data 
    $otherData = Array('firstnumber'=>0, 'secondnumber'=>10); 

    // Append other data to end of array 
    $arr[] = $otherData; 

    echo $_GET['callback'].'('.json_encode($arr).')'; 

}else{ 

} 
1

PHP配列を混在/照合することができます。データベースフェッチループで構築した配列に数字キー(0,1,2、...)が与えられ、その後に 'firstnumber'と 'secondnumber'キーを追加することができます。

ただし、キーの種類を区別する必要があるため、これによりループが少し遅れることがあります。

$data = array(); 
while(...) { 
    $data['stuff_from_db'][] = $obj; 
} 
$data['other_stuff']['first_number'] = 0; 
$data['other_stuff']['second_number'] = 10; 

あなたは、配列の並列別の支店でのデータベースの結果と「他のもの」を維持することができます:しかし、何も入れ子構造をしているからあなたを停止しません。

関連する問題