我试图合并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数组格式,如果我合并现有的数据数组。请让我知道如何输出其他数据以及当前数据来自mysql与json编码。
我得到这样的输出与我现有的代码,这是正确的:
{"用户":[{" id ":"14"、"名称":"Sonu罗伊"、"照片":"image012.jpg","邮件":"myemail@gmail.com"、"性别":"男性"、"生日":"1983-01-11"}]}
但是现在我想添加其他变量,例如$user_ip_address作为用户的数据与当前输出数据连接,如下所示:
{"用户":[{" id ":"14"、"名称":"Sonu罗伊"、"照片":"image012.jpg","邮件":"myemail@gmail.com"、"性别":"男性"、"生日":"1983-01-11",user_ip:"127.0.0.1"}]}。
我想这样做。怎么做呢?请让我知道。
try this:
echo json_encode(array('users' => $arr, 'user_ip' => $user_ip_address));
边注:你应该使用PHP的PDO类来连接和查询数据库
mysql_fetch_object
返回一个对象,而不是一个数组。那么,你通过$arr[] = $obj;
所做的就是将一个对象添加到数组中。因此,$arr
的实际结构类似于
$arr => [
[0] => Object(....),
[1] => Object(....),
....
]
在您的特殊情况下,我假设您通过主键获取单行,因此只有一个对象。
解决这个问题最简单的方法是在对象中添加一个字段。从5.3开始我就没有使用过PHP了,所以不能确定,但是只要添加 就可以了。$obj->user_ip = $user_ip_address;
在循环内。
顺便说一句,有几个问题要问你:
- 为什么你使用循环,如果它应该导致单行?
- 为什么将变量直接嵌入到SQL查询中。这是相当脆弱的,阅读关于sql注入和如何防止它(有一天我真的很累告诉这里的人在SO使用PDO和准备语句,所以只是去读它),
- 你看过
mysql_fetch_object
和array_merge
的文件吗?为什么不呢(因为如果你读过你就不会问这个问题了)。 - 尝试调试吗?例如,附加调试器和观察变量的内容?使用
echo
插入日志或(上帝原谅我)调试打印? "没有工作"是一个非常糟糕的错误描述。这次你很幸运,因为错误很明显。下次请说得具体一点。