2012-02-15 58 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 2012-02-15 14:33:02

+0

谢谢你让我知道,我会马上做到这一点! – 2012-02-15 14:47:36

回答

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; 

它可以让你保持数据库的结果,并在阵列的并行单独的分支“其他东西”。