如何用json编码mysql数组数据合并一些静态数据?

时间:2013-01-11 15:32:38

标签: php mysql json

我正在尝试将静态数据与json编码数组数据合并以进行输出。这是我的PHP代码:

$arr = array();

$rs = mysql_query("SELECT id, name, picture, mail, gender, birthday FROM users WHERE id='$logged_id' ");

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

echo '{"users":'.json_encode($arr).'}';

现在我想与其他数据合并:

$user_ip = array("user_ip" => $user_ip_address);

我尝试过array_merge($ arr,$ user_ip)。但它没有用。如果我与现有的数据数组合并,我认为这不是正确的json数组格式。请告诉我如何使用json编码输出其他数据以及来自mysql的当前数据。

我使用现有代码获得此类输出,这是正确的:

{"用户":[{" ID":" 14""名称":"鲜于罗伊""图像":" image012.jpg""邮件":" myemail@gmail.com",&#34 ;性别":"男性""生日":" 1983年1月11日"}]}

但现在我想添加其他变量,例如$ user_ip_address作为用户的数据加入当前输出数据,如下所示:

{"用户":[{" ID":" 14""名称":"鲜于罗伊""图像":" image012.jpg""邮件":" myemail@gmail.com",&#34 ;性别":"男性""生日":" 1983年1月11日",user_ip:" 127.0.0.1" }]}。

我想以这种方式得到它。怎么做?请告诉我。提前谢谢。

2 个答案:

答案 0 :(得分:0)

试试这个:

echo json_encode(array('users' => $arr, 'user_ip' => $user_ip_address));

旁注: 您应该使用PHP PDO类来连接和查询数据库。

答案 1 :(得分:0)

mysql_fetch_object返回一个对象,而不是一个数组。那么,$arr[] = $obj;你在做什么只是将一个对象添加到一个数组中。因此,$arr的实际结构类似于

$arr => [
    [0] => Object(....),
    [1] => Object(....),
    ....
]

在您的特定情况下,我假设您通过主键获取单行,因此只有一个对象。

解决此问题的最简单方法是向对象添加字段。自5.3以来我没有使用PHP,所以不能确定,但​​它就像添加

一样简单
$obj->user_ip = $user_ip_address;

在循环中。

顺便说一下,有几个问题要问你:

  1. 如果它应该导致单行,为什么要使用循环?
  2. 为什么要将变量直接嵌入到SQL查询中。它非常脆弱,阅读有关sql注入以及如何防止它(有一天我真的很累,告诉人们这里使用PDO和准备好的语句,所以只需阅读它),
  3. 您是否阅读了有关mysql_fetch_objectarray_merge的文档?为什么不(因为如果你已经读过它,你就不会问这个问题。)
  4. 试过调试?例如。附加调试器并观察变量内容?使用echo
  5. 插入日志记录或(上帝原谅我)调试打印
  6. “没有工作”是一个非常糟糕的错误描述。这次你很幸运,因为错误很明显。下次,请更具体。