2012-02-15 3 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) 공격. 클라이언트는 자바 스크립트 코드를 시스템에 주입 할 수 있습니다. '$ _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; 

합니다.